The DataEngine.FilterChanged script allows you to perform any necessary tasks after the user has changed the filter for a report, either by adding, editing, or removing conditions.

Parameters
A reference to the Stonefield Query Application object.

Return Value
Any value (Stonefield Query ignores the return value).

Example
Suppose the Select script a table uses needs to know if the user is filtering on the CUSTOMERS.TYPEID field (perhaps it has to look up values in another table). The DataEngine.FilterChanged script could store the value the user is filtering on in a property of the Application object the Select script uses.

Visual FoxPro

lparameters toApplication as SQApplication
local loFilters, lnI, loCondition, liType
loFilters = toApplication.DataEngine.FilterConditions
for lnI = 1 to loFilters.Count
  loCondition = loFilters.Item(lnI)
  if loCondition.FieldName = 'CUSTOMERS.TYPEID'
    liType = loCondition.Values.Item(1)
    toApplication.AddProperty('CustomerTypeFilter', ;
      liType)
  endif
next

VBScript

function Main(Application)
dim Filters, Condition
set Filters = Application.DataEngine.FilterConditions
for I = 1 to Filters.Count
  set Condition = Filters.Item(lnI)
  if Condition.FieldName = "CUSTOMERS.TYPEID"
    TypeID = Condition.Values.Item(1)
    Application.AddProperty("CustomerTypeFilter", _
      TypeID)
  end if
next
end function

JavaScript

function Main(Application, SelectStatement) {
var Filters, I, Condition, TypeID ;
Filters = Application.DataEngine.FilterConditions ;
for (I = 1; I <= Filters.Count; I++) {
  Condition = Filters.Item(lnI) ;
  if (Condition.FieldName = 'CUSTOMERS.TYPEID') {
    TypeID = Condition.Values.Item(1) ;
    Application.AddProperty('CustomerTypeFilter', 
      TypeID) ;
  }
}
}

C#

Please note that the method in this script must be named DataEngine_FilterChanged.

public static void DataEngine_FilterChanged(SFQApplication sfqApplication)
{	
  foreach(FilterCondition filter in sfqApplication.DataEngine.FilterConditions)
  {
    if(filter.FieldName.ToUpper() == "CUSTOMERS.TYPEID")
    {
      string typeID = (string)filter.Values.Item(0).Value;
      sfqApplication.AddProperty("CustomerTypeFilter", typeID);
      break;
    }
  }
}

VB.NET

Please note that the method in this script must be named DataEngine_FilterChanged.

public shared function DataEngine_FilterChanged(sfqApplication as SFQApplication) as Boolean
  For Each filter As FilterCondition In sfqApplication.DataEngine.FilterConditions
    if filter.FieldName.ToUpper() = "CUSTOMERS.TYPEID" Then
      Dim typeID As String = filter.Values.Item(0).Value
      sfqApplication.AddProperty("CustomerTypeFilter", typeID)
      Exit For
    End If
  Next
  Return True
End Function

See also

DataEngine Object | Scripts

© Stonefield Software Inc., 2023 • Updated: 06/06/16
Comment or report problem with topic