Syntax:
HRESULT ApplyFilter(const VARIANT* arvFields, const VARIANT* arvValues);
Task:
Only used at node level. In the drilldown case, List & Label transfers a field list and its contents. For example, you can use WHERE to restrict an underlying SQL statement in the data object.
Parameter:
arvFields: VARIANT field with the field names
arvValues: VARIANT field of equal size with the field contents
Return value:
E_NOTIMPL for root objects, otherwise S_OK or E_FAIL in case of error
Hints:
Empty filter requests can also be answered with S_OK.
Example:
SAFEARRAY* pArray = arvFields->parray;
SAFEARRAY* pValArray = arvValues->parray;
for (ULONG i = 0; i < pArray->rgsabound[0].cElements; ++i)
{
CSafeVARIANT vHelper, vValHelper;
long lResIndex[2] = { i, 1 };
::SafeArrayGetElement(pArray, lResIndex, &vHelper);
::SafeArrayGetElement(pValArray, lResIndex, &vValHelper);
_sqlparms._ddwhere += xsprintf(L"%ls%ls = %ls",
_sqlparms._ddwhere.empty() ? L"WHERE " : L"AND ",
(LPCTSTR)MakeDBColumnString(this, vHelper));
(LPCTSTR)MakeDBValueString(this, vHelper, vValHelper));
}
return S_OK;