| Stonefield Query SDK |
| DataEngine.GetCustomMetaData |
This script is called immediately after Stonefield Query loads the data dictionary from the REPMETA table into its DataEngine collections. So, you have full access to the in-memory data dictionary without altering the disk copy in REPMETA.
If you want to display an error message and terminate Stonefield Query (for example, if your script determines that something is wrong), set SQApplication.DataEngine.ErrorMessage to the desired message and return .F. from your script code.
Parameters
A reference to the Stonefield Query Application object.
Return Value
True if Stonefield Query can continue, False to terminate.
Example
Visual FoxPro
Here's an example that adds custom fields the user has added to their tables to the Stonefield Query data dictionary. It assumes there's a table called CUSTFLDS located in the directory specified in the Application object's TargetApplicationDirectory property that contains the necessary information. In this table, FIELDNAME contains the field name, FIELDTYPE contains the field type, FIELDLEN contains the field width, FIELDDEC contain the number of decimals, and FIELDHEAD contains the caption for the field.
lparameters toApplication as SQApplication local lnSelect, loField as Field, lcName lnSelect = select() select 0 use (toApplication.TargetApplicationDirectory + 'CUSTFLDS') scan lcName = trim(FIELDNAME) loField = toApplication.DataEngine.Fields.AddItem(lcName) loField.Type = FIELDTYPE loField.Length = FIELDLEN loField.Decimals = FIELDDEC loField.Caption = trim(FIELDHEAD) endscan use select (lnSelect) return .T.
VBScript
This example makes the EMPLOYEES and PAYROLL tables invisible to all but the ADMIN user.
function Main(Application)
dim Table
if Application.Users.UserName <> "ADMIN" then
set Table = Application.DataEngine.Tables.Item("EMPLOYEES")
Table.Reportable = False
set Table = Application.DataEngine.Tables.Item("PAYROLL")
Table.Reportable = False
end if
Main = True
end function JavaScript
This example makes the EMPLOYEES and PAYROLL tables invisible to all but the ADMIN user.
function Main(Application) {
var Table ;
if (Application.Users.UserName != 'ADMIN') {
Table = Application.DataEngine.Tables.Item('EMPLOYEES') ;
Table.Reportable = false ;
Table = Application.DataEngine.Tables.Item('PAYROLL') ;
Table.Reportable = false ;
}
return true ;
} C#
Please note that the method in this script must be named DataEngine_GetCustomMetaData.
public static bool DataEngine_GetCustomMetaData(SFQApplication sfqApplication)
{
if(sfqApplication.Users.UserName != "ADMIN")
{
// Please note that any changes you make to this item will only be saved in
// Stonefield Query after you call the Dispose() method or by using the 'using'
// syntax below which calls Dispose() for you automatically
using(Table table = sfqApplication.DataEngine.Tables.Item("CATEGORIES"))
{
table.Reportable = false;
}
using(Table table = sfqApplication.DataEngine.Tables.Item("SHIPPERS"))
{
table.Reportable = false;
}
}
return true;
} VB.NET
Please note that the method in this script must be named DataEngine_GetCustomMetaData.
public shared function DataEngine_GetCustomMetaData(sfqApplication as SFQApplication) as Boolean
if sfqApplication.Users.UserName <> "ADMIN" Then
' Please note that any changes you make to this item will only be saved in
' Stonefield Query after you call the Dispose() method or by using the 'using'
' syntax below which calls Dispose() for you automatically
using table As Table = sfqApplication.DataEngine.Tables.Item("CATEGORIES")
table.Reportable = false
End Using
using table As Table = sfqApplication.DataEngine.Tables.Item("SHIPPERS")
table.Reportable = false
End Using
End If
Return true
End FunctionSee Also
DataEngine Object | Scripts
| Last Updated: 07/30/12 |