フィルタを作成または置換し、フィルタのコンテンツの設定を開始します。
構文
ESS_FUNC_M EssSetFilter (
hCtx, AppName, DbName, FilterName, Active, Access
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
AppName |
ESS_STR_T |
アプリケーション名。 |
DbName |
ESS_STR_T |
データベース名。 |
FilterName |
ESS_STR_T |
フィルタ名。フィルタ名の制限を参照してください。 |
Active |
ESS_BOOL_T |
フィルタのアクティブ・フラグ。TRUEの場合はフィルタがアクティブに設定され、TRUEでない場合は非アクティブに設定されます。 |
Access |
ESS_ACCESS_T |
デフォルトのフィルタ・アクセス・レベル。 |
備考
フィルタが存在しない場合は、この呼出しによって最初にそのフィルタが作成されます。
この呼出しの後にEssSetFilterRowを続けて呼び出して、フィルタのすべての行を設定する必要があります。
既存のフィルタへの上書きを避けるため、EssCreateFilterを使用します。EssCreateFilterは特定のデータベースに一意な名前のフィルタのみを作成しますが、同じデータベース上の同一名の既存のフィルタには上書きしません。
戻り値
なし。
アクセス
この関数を使用するには、呼出し元が、指定したデータベースに対してデータベース・デザイン権限(ESS_PRIV_DBDESIGN)を持っている必要があります。
例
ESS_FUNC_M
ESS_SetFilter (ESS_HCTX_T hCtx)
{
ESS_FUNC_M sts = ESS_STS_NOERR;
ESS_STR_T AppName;
ESS_STR_T DbName;
ESS_STR_T FilterName;
ESS_BOOL_T Active;
ESS_ACCESS_T Access, AccessAry[3];
ESS_STR_T RowString[3];
ESS_USHORT_T ind;
AppName = "Sample";
DbName = "Basic";
FilterName = "NewFilter";
Active = ESS_TRUE;
/***** Set Filter *****/
sts = EssSetFilter(hCtx, AppName, DbName,
FilterName, Active, Access);
if(!sts)
{
RowString[0] = "@IDESCENDANTS(Scenario)";
RowString[1] = "@IDESCENDANTS(Product)";
RowString[2] = "Qtr1, @IDESCENDANTS(\"Colas\")";
AccessAry[0] = ESS_ACCESS_READ;
AccessAry[1] = ESS_ACCESS_NONE;
AccessAry[2] = ESS_ACCESS_WRITE;
/***** Set Filter Rows *****/
for(ind = 0; ind < 3; ind++)
{
sts = EssSetFilterRow(hCtx, RowString[ind],
AccessAry[ind]);
if(sts)
printf("Cannot set Filter row %s\r\n",
RowString[ind]);
}
sts = EssSetFilterRow(hCtx,
"",ESS_ACCESS_NONE);
}
return (sts);
}
関連トピック