アウトラインをクエリーします。
構文
EsbOtlQueryMembersByName
(
hOutline, pszMember, pPredicate, pCounts
)
ByVal
hOutline
As Long
ByVal
pszMember
As String
pPredicate
As ESB_PREDICATE_T
pCounts
As ESB_MBRCOUNTS_T
| パラメータ | 説明 |
|---|---|
hOutline |
Essbaseアウトライン・ハンドル。EsbOtlOpenOutlineQuery()から戻されている必要があります。 |
pszMember |
操作を行うメンバーのメンバー名文字列。この値がNULLである場合、その次元の論理親を表し、アウトラインの最上部であるとみなされます。次のオプションでは、この値は無視されます:
|
pPredicate |
クエリーを定義している構造体。この構造体のフィールドは、「注意」を参照してください。 |
pCounts |
カウントに関する情報を定義している構造体。次のフィールドが含まれます:
|
備考
この呼出しは、操作対象のメンバー名文字列を使用して、オプション値で指定された基準に適合するメンバーのハンドル配列を戻します。
戻されたphMembersのメンバー配列が不要になった場合、呼出し元はEsbOtlFreeMember()を呼び出す必要があります。
配列の各hMember要素は、EsbOtlOpenOutlineQuery()にリストされた呼出しのみで使用できます。たとえば、戻されたメンバー・ハンドルは、EsbOtlGetSibling()を呼び出すために使用できません。
プログラマは、各メンバーのハンドルが戻されるたびに、EsbGetNextItem()を1度呼び出す必要があります。
pPredicate構造体のフィールドは、次のように使用されます:
ulQuery - 実行する操作を定義する値。次のいずれかになります:
ESB_CHILDREN
ESB_DESCENDANTS
ESB_BOTTOMLEVEL
ESB_SIBLINGS
ESB_SAMELEVEL
ESB_SAMEGENERATION
ESB_PARENT
ESB_DIMENSION
ESB_NAMEDGENERATION
ESB_NAMEDLEVEL
ESB_SEARCH
ESB_WILDSEARCH
ESB_USERATTRIBUTE
ESB_ANCESTORS
ESB_DTSMEMBERS
ESB_DIMUSERATTRIBUTES
ulOptions - 任意のオプションを定義する値。次のクエリー・オプションとともに使用されます:
ESB_SEARCH、ESB_WILDSEARCH - 次のいずれかの値になります:
ESB_MEMBERSONLY
ESB_ALIASESONLY
ESB_MEMBERSANDALIASES
すべてのオプション - ESB_COUNTONLY: メンバーのハンドルは戻さずに、pCounts構造体のpTotalCountフィールドにのみ値を入れます
szDimension - クエリーの範囲を制限する次元。このフィールドは次のクエリー・オプションで使用され、それ以外では無視されます:
SB_NAMEDGENERATION
ESB_NAMEDLEVEL
ESB_USERATTRIBUTE
ESB_SEARCH - すべての次元を検索するには、NULLに設定します
ESB_WILDSEARCH - すべての次元を検索するには、NULLに設定します
pszString1- オプションによって決まる入力文字列。このフィールドは次のクエリー・オプションで使用され、それ以外では無視されます:
ESB_NAMEDGENERATION - 世代の名前
ESB_NAMEDLEVEL - レベルの名前
ESB_SEARCH - 検索する文字列。この文字列は完全一致として定義されています
ESB_WILDSEARCH - 検索する文字列。この文字列は、末尾にオプションの'*'が付いた完全一致検索文字列として指定され、'*'部分は任意の文字の組合せが可能です。
ESB_USERATTRIBUTE - ユーザー定義属性
pszString2- オプションによって特定される入力文字列。このフィールドは次のクエリー・オプションで使用され、それ以外では無視されます:
ESB_USERATTRIBUTE - ユーザー定義属性。
ESB_SEARCH、ESB_WILDSEARCH - オプションで別名テーブルを検索するよう設定されている場合、この文字列は検索対象の別名テーブルを指定します。NULLの場合、すべての別名テーブルが検索されます。
戻り値
関数が正常終了した場合、戻り値は0になります。
例
Declare Function EsbOtlQueryMembersByName Lib "ESBOTLN"
(ByVal hOutline As Long, ByVal pszMember As String,
pPredicate As ESB_PREDICATE_T, pCounts As ESB_MBRCOUNTS_T) As Long
Declare Function EsbOtlFreeMember Lib "ESBOTLN"
(ByVal hOutline As Long, ByVal hMember As Long) As Long
Sub ESB_OtlQueryMembersByName()
Dim sts As Long
Dim hOutline As Long
Dim pszMember As String
Dim ihMember As Long
Dim Object As ESB_OBJDEF_T
Dim MbrInfo As ESB_MBRINFO_T
Dim Predicate As ESB_PREDICATE_T
Dim Counts As ESB_MBRCOUNTS_T
Dim Access As Integer
Dim AppName As String
Dim DbName As String
pszMember = "Qtr1"
AppName = "Sample"
DbName = "Basic"
sts = EsbOtlOpenOutlineQuery(hCtx, Object, hOutline) 'open outline
If sts = 0 Then 'proceed if open successful
'else message with error
Predicate.ulQuery = ESB_CHILDREN
Predicate.pszDimension = "Year"
Counts.ulStart = 0
Counts.ulMaxCount = 10
If sts = 0 Then
sts = EsbOtlQueryMembersByName(hOutline, pszMember, Predicate, Counts)
If sts = 0 And Counts.ulReturnCount <> 0 Then
For n% = 1 To Counts.ulReturnCount
sts = EsbGetNextItem(hCtx, ESB_HMEMBER_TYPE, ihMember)
If sts = 0 And ihMember <> 0 Then
sts = EsbOtlFreeMember(hOutline, ihMember)
End If
Next
End If
End If
Else
msgbox "Outline open failed with error: " & sts
Endif
End Sub
関連トピック