ApiTableCreate - cDbUpdateFunctionLibrary

Creates a new Table.


Type: Function


Parameters: Handle hTable String sRootName String sDisplayName String sLogicalName Boolean bUseConnectionID Boolean bANSI Boolean bRecnum

Parameter

Description

hTable

A file handle to the table name. Same as the Filelist.cfg slot number.

sRoot

The root name of the table

sDisplay

The display name of the table

sTableName

The table name or logical name of the table

bUseConnectionID

Should a connection ID be used (if SQL driver) for the .int file

bANSI

Should the table be created to contain ANSI data

bRecnum

Should the table use a Recnum field

tAPIColumn[]

Optional. A tAPIColumn struct array with field/column specifications


Syntax


Function ApiTableCreate Integer hTable String sRootName String sDisplayName String sTableName Boolean bUseConnectionID Boolean bANSI Boolean bRecnum tAPIColumn[] APIColumn

Call:

Get ApiTableCreate hTable "MyTable" "MyTable" "MyTable" True True True to bOK



Description

Use it to create a new table. The file handle should be a free file slot from Filelist.cfg. You can use the function NextFreeFilelistSlot to get one of those.

Note: If you want to remove a table use the ApiTableRemove function.


Example 1


Procedure OnUpdate

   Boolean bOK

   Handle hTable

   

   Get NextFreeFilelistSlot to hTable

   Get ApiTableCreate hTable "Sales" "Sales" "Sales" True True True to bOK


End_Procedure


Example 2


// Perhaps a bit more realistic example:    

Object oDbUpdateVersion1.1 is a cDbUpdateVersion

   Set pnVersionNumber to 1.1

       

   // This will create three new tables; MapConfig, MapGroup & MapLayer.

   // MapLayer relates to MapGroup and MapConfig is a system table

   Procedure OnUpdate

       Boolean bOK                                                                

       tAPIColumn[] APIColumn APIEmpty

       Integer iCount

           

       Move 0 to iCount                                  

       // New table: MapConfig First column:

       Move "Longitude"    to APIColumn[iCount].sFieldName

       Move SQL_CHAR       to APIColumn[iCount].iType

       Move 15             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Second column

       Move "Latitude"     to APIColumn[iCount].sFieldName

       Move SQL_CHAR       to APIColumn[iCount].iType

       Move 15             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Third column

       Move "ZoomFactor"   to APIColumn[iCount].sFieldName

       Move SQL_INTEGER    to APIColumn[iCount].iType

       Move 10             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

         

       Get ApiTableCreate 3010 "MapConfig" "MapConfig" "MapConfig" True True True APIColumn to bOK

       Get ApiTableChangeAttribute 3010 DF_FILE_IS_SYSTEM_FILE True to bOK


       // Reset variables

       Move APIEmpty to APIColumn

       Move 0        to iCount

       

       // New table: MapGroup - First column

       Move "ID"           to APIColumn[iCount].sFieldName

       Move SQL_INTEGER    to APIColumn[iCount].iType

       Move 10             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Move C_tAPIColumn_Identity to APIColumn[iCount].iOptions

       Increment iCount

           

       // Second column

       Move "Group"        to APIColumn[iCount].sFieldName

       Move SQL_CHAR       to APIColumn[iCount].iType

       Move 30             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

           

       Get ApiTableCreate 3011 "MapGroup" "MapGroup" "MapGroup" True True False APIColumn to bOK

       // No need to create an index here as the "ID" column already has been set to a primary key (C_tAPIColumn_Identity)

           

       // Reset variables

       Move APIEmpty to APIColumn

       Move 0        to iCount

           

       // New table: MapLayer - First column

       Move "ID"           to APIColumn[iCount].sFieldName

       Move SQL_INTEGER    to APIColumn[iCount].iType

       Move 10             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Move C_tAPIColumn_Identity to APIColumn[iCount].iOptions

       Increment iCount

           

       // Second column

       Move "GroupID"      to APIColumn[iCount].sFieldName

       Move SQL_INTEGER    to APIColumn[iCount].iType

       Move 10             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Third column

       Move "DisplayLayer" to APIColumn[iCount].sFieldName

       Move SQL_CHAR       to APIColumn[iCount].iType

       Move 30             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Fourth column

       Move "RealLayer"    to APIColumn[iCount].sFieldName

       Move SQL_CHAR       to APIColumn[iCount].iType

       Move 30             to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Fifth column

       Move "Visible"      to APIColumn[iCount].sFieldName

       Move SQL_TINYINT    to APIColumn[iCount].iType

       Move 3              to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Six column

       Move "Active"       to APIColumn[iCount].sFieldName

       Move SQL_TINYINT    to APIColumn[iCount].iType

       Move 3              to APIColumn[iCount].iLength

       Move 0              to APIColumn[iCount].iPrecision

       Increment iCount

           

       // Create table

       Get ApiTableCreate 3012 "MapLayer" "MapLayer" "MapLayer" True True True APIColumn to bOK

         

       // Create indexes

       // No need to create an index for the "ID" column as it has been set to be the primary key (C_tAPIColumn_Identity)

       Get APIIndexCreateByFieldNames 3012 2 "GROUPID,ID"      to bOK

       Get APIIndexCreateByFieldNames 3012 3 "DisplayLayer,ID" to bOK

       Get APIIndexCreateByFieldNames 3012 4 "RealLayer,ID"    to bOK

       Get APIIndexCreateByFieldNames 3012 5 "Visible,ID"      to bOK

       Get APIIndexCreateByFieldNames 3012 6 "Active,ID"       to bOK

           

       // Relate MapLayer.GroupID -> MapGroup.ID

       Get ApiTableRelate 3012 3011 2 1 to bOK

           

   End_Procedure

 

End_Object