The DataEngine.BeforeCreateSQLStatement script is called before Stonefield Query creates the SQL statement for the report, allowing you to make changes to things, such as filter conditions, that affect the SQL statement. You can, for example, display your own filter dialog, prompting the user for additional values under certain circumstances. You can also use this to automatically add filter conditions to a query that the user doesn't see.

Parameters
A reference to the Stonefield Query Application object.

Return Value
True if the result set retrieval should continue or False if not.

Example
This is similar to the example in DataEngine.FinalizeSQLStatement, but adds FilterCondition objects to the FilterConditions collection instead, since the SQL statement hasn't been created yet.

Visual FoxPro

lparameters toApplication as SQApplication
local lcSalespersonID, loCondition as FilterCondition
lcSalespersonID = toApplication.GetRegistryValue('ID', '', ;
  'Software\MyCompany\SalesApplication')
loCondition = toApplication.DataEngine.FilterConditions.AddItem()
loCondition.FieldName = 'Salesperson.SalespersonID'
loCondition.Condition = loCondition.FieldName + " = '" + ;
  lcSalespersonID + "'"
loCondition.Connection = 'and'
loCondition.IncludeInDisplay = .F.
loCondition.Operator = 'equals'
loCondition.Values.AddItem(lcSalespersonID)

VBScript

function Main(Application)
dim Condition
SalespersonID = Application.GetRegistryValue("ID", "", _
  "Software\MyCompany\SalesApplication")
set Condition = Application.DataEngine.FilterConditions.AddItem()
Condition.FieldName = "Salesperson.SalespersonID"
Condition.Condition = loCondition.FieldName & " = '" & _
  SalespersonID & "'"
Condition.Connection = "and"
Condition.IncludeInDisplay = False
Condition.Operator = "equals"
Condition.Values.AddItem(lcSalespersonID)
end function

JavaScript

function Main(Application, SelectStatement) {
var SalespersonID, Condition ;
SalespersonID = Application.GetRegistryValue('ID', ' ', 
  'Software\MyCompany\SalesApplication') ;
Condition = Application.DataEngine.FilterConditions.AddItem() ;
Condition.FieldName = 'Salesperson.SalespersonID' ;
Condition.Condition = loCondition.FieldName + " = '" + 
  SalespersonID + "'" ;
Condition.Connection = 'and' ;
Condition.IncludeInDisplay = false ;
Condition.Operator = 'equals' ;
Condition.Values.AddItem(lcSalespersonID)
}

See Also
DataEngine.FinalizeSQLStatement | DataEngine Object | Scripts