See Also: Execute Structure_Start, Get_Attribute, Structure_Start, Structure_End, Creating and Modifying Table Structures in the Database Essentials section of the Developing Database Applications book, DF_FILE_PHYSICAL_NAME for examples of creating a new table
To set a global, driver, database/connection, table, column, or index attribute.
For table attributes:
Set_Attribute {attribute} [of {tableHandle} [{columnNum} | {indexNum} [{segmentNum}]]] ;
to {variable}
For driver attributes:
Set_Attribute {attribute} of {driverId} to {variable}
For database attributes:
Set_Attribute {attribute} of {driverId} {databaseHandle} to {variable}
{attribute} Attribute Id to be retrieved.
{tableHandle} Optional Handle for either a table or a structure.
{columnNum} Optional column to be interrogated.
{indexNum} Optional index to be interrogated.
{segmentNum} Number of a segment in indexNum to be modified.
{variable} A variable to hold the value of the attribute. It should be of the same type as the attribute, if known. Otherwise, you can safely use a String variable here.
{driverId} Identifier for a database driver.
{databaseHandle} Identifier of a database.
DataFlex stores information about database drivers, connections and tables as a set of system, table, index, and column attributes. Set_Attribute allows your program to modify the current setting of a given attribute.
Integer iFreq
Move 1000 to iFreq
Set_Attribute DF_RUNTIME_PROGRESS_FREQUENCY to iFreq
This example sets the interval between runtime progress updates to 1000 milliseconds (1 second).
String sFileListName
Move "filelist2.cfg" to sFileListName
Set_Attribute DF_FILELIST_NAME to sFileListName
This example changes the current filelist in use to filelist2.cfg.
Procedure ShowDriverAttribute Integer iDriver
Set_Attribute DF_DRIVER_SILENT_LOGIN of iDriver to True
End_Procedure
This example sets silent driver login to true.
Drivers can be enumerated using this function:
Function DriverIndex String sDriver Returns Integer
String sCurrentDriver
Integer iDriver iNumDrivers
Get_Attribute DF_NUMBER_DRIVERS to iNumDrivers
For iDriver From 1 To iNumDrivers
Get_Attribute DF_DRIVER_NAME of iDriver to sCurrentDriver
If (Uppercase(sDriver) = Uppercase(sCurrentDriver)) Begin
Function_Return iDrive
End
Loop
Function_Return 0
End_Function
Procedure ShowDBAttribute Integer iDriver Handle hDatabase
Integer iAttribValue
Get_Attribute DF_DATABASE_FIND_CACHE_TIMEOUT of iDriver hDatabase to iAttribValue
Move (iAttribValue * 2) to iAttribValue
Set_Attribute DF_DATABASE_FIND_CACHE_TIMEOUT of iDriver hDatabase to iAttribValue
End_Procedure
This example retrieves the database's find cache timout and sets it to double its prior value.
Database Handles can be obtained via the DF_DATABASE_ID attribute.
Procedure AddTableToFilelist
Handle hTable
Move 20 to hTable // new number
Set_Attribute DF_FILE_LOGICAL_NAME of hTable to "OrderHea"
Set_Attribute DF_FILE_ROOT_NAME of hTable to "OrderHea"
Set_Attribute DF_FILE_DISPLAY_NAME of hTable to "Order Header Table"
End_Procedure
This example adds the OrderHea table to the current filelist as table number 20.
Integer iColumn iIndex
Handle hTable
Open Customer
Move Customer.File_Number to hTable
Move 1 to iColumn
Move 2 to iIndex
Structure_Start hTable "DATAFLEX"
Set_Attribute DF_FIELD_INDEX of hTable iColumn to iIndex
Structure_End hTable DF_STRUCTEND_OPT_NONE
This example sets the main index for column 1 in the Customer table to index 2.
Integer iIndex iSegment iColumn iNumSegments
Handle hTable
Open Customer
Move Customer.File_Number to hTable
Get_Attribute DF_FILE_LAST_INDEX_NUMBER of hTable to iIndex // get last index
increment iIndex // add 1 to last index number
Move 2 to iNumSegments
Move 1 to iSegment
Structure_Start hTable "DATAFLEX"
Create_Index hTable at iIndex
Set_Attribute DF_INDEX_NUMBER_SEGMENTS of hTable iIndex to iNumSegments
Field_Map hTable "STATE" to iColumn // get column number of STATE column
Set_Attribute DF_INDEX_SEGMENT_FIELD of hTable iIndex iSegment to iColumn
increment iSegment // next segment
Field_Map hTable "NAME" to iColumn // get column number of NAME column
Set_Attribute DF_INDEX_SEGMENT_FIELD of hTable iIndex iSegment to iColumn
Structure_End hTable DF_STRUCTEND_OPT_NONE
This example adds an index after the last index to the Customer table. The index has 2 segments: the STATE column and the NAME column.
Integer iIndex iSegment iColumn iNumSegments
Handle hTable
Open Customer
Move Customer.File_Number to hTable
Get_Attribute DF_FILE_LAST_INDEX_NUMBER of hTable to iIndex // get last index
Increment iIndex // add 1 to last index number
Move 2 to iNumSegments
Move 1 to iSegment
Structure_Start hTable "DATAFLEX"
Create_Index hTable at iIndex
Set_Attribute DF_INDEX_NUMBER_SEGMENTS of hTable iIndex to iNumSegments
Field_Map hTable "NAME" to iColumn // get column number of NAME column
Set_Attribute DF_INDEX_SEGMENT_FIELD of hTable iIndex iSegment to iColumn
Increment iSegment // next segment
// get column number of CUSTOMER_NUMBER column
Field_Map hTable "CUSTOMER_NUMBER" to iColumn
Set_Attribute DF_INDEX_SEGMENT_FIELD of hTable iIndex iSegment to iColumn
Structure_End hTable DF_STRUCTEND_OPT_NONE
This example adds an index after the last index to the Customer table. The index has 2 segments: the NAME column and the CUSTOMER_NUMBER column.
Set_Attribute may be executed only after a structure_start, except for global attributes. See structure_start for more information.