Table

Diese Methode erzeugt eine neue Tabelle mit der Tabellenstruktur, die über ein Array mit x Elementen bzw. x Spalten in der SPS definiert wird.

Syntax

METHOD Table : BOOL
VAR_INPUT
    hDBID : UDINT;
    sTableName : T_MaxString;
    pTableCfg : POINTER TO ARRAY[0..MAX_DBCOLUMNS] OF ST_ColumnInfo;
    cbTableCfg : UDINT;
END_VAR

Table 1: Eingänge

Name

Typ

Beschreibung

hDBID

UDINT

Gibt die ID der zu verwendenden Datenbank an.

sTableName

MaxString

Name der Tabelle, die erzeugt werden soll.

pTableCfg

POINTER TO ARRAY[0..MAX_DBCOLUMNS] OF ST_ColumnInfo

Gibt die Pointer-Adresse des Tabellenstrukturarrays an. In diesem Array werden die einzelnen Spalten beschrieben.

cbTableCfg

UDINT

Gibt die Länge der Arrays an, in dem die Spalten konfiguriert sind.

Table 2: Rückgabewert

Name

Typ

Beschreibung

Table

BOOL

Zeigt den Status der Methode. Liefert TRUE, sobald die Methodenausführung beendet ist, also auch im Fehlerfall.

Beispiel

VAR
    fbPLCDBCreate : FB_PLCDBCreateEvt(sNetID := '', tTimeout := T#5S);
    ColumnInfo    : ARRAY [0..14] OF ST_ColumnInfo;
    tcMessage     : I_TcMessage;
END_VAR
ColumnInfo[0].sName := 'colBigInt';     ColumnInfo[0].eType := E_ColumnType.BigInt;     ColumnInfo[0].nLength := 8;     ColumnInfo[0].sProperty := 'IDENTITY(1,1)';
ColumnInfo[1].sName := 'colInteger';    ColumnInfo[1].eType := E_ColumnType.Integer;    ColumnInfo[1].nLength := 4;
ColumnInfo[2].sName := 'colSmallInt';   ColumnInfo[2].eType := E_ColumnType.SmallInt;   ColumnInfo[2].nLength := 2;
ColumnInfo[3].sName := 'colTinyInt';    ColumnInfo[3].eType := E_ColumnType.TinyInt;    ColumnInfo[3].nLength := 1;
ColumnInfo[4].sName := 'colBit';        ColumnInfo[4].eType := E_ColumnType.BIT_;       ColumnInfo[4].nLength := 1;
ColumnInfo[5].sName := 'colMoney';      ColumnInfo[5].eType := E_ColumnType.Money;      ColumnInfo[5].nLength := 8;
ColumnInfo[6].sName := 'colFloat';      ColumnInfo[6].eType := E_ColumnType.Float;      ColumnInfo[6].nLength := 8;
ColumnInfo[7].sName := 'colReal';       ColumnInfo[7].eType := E_ColumnType.REAL_;      ColumnInfo[7].nLength := 4;
ColumnInfo[8].sName := 'colDateTime';   ColumnInfo[8].eType := E_ColumnType.DateTime;   ColumnInfo[8].nLength := 4;
ColumnInfo[9].sName := 'colNText';      ColumnInfo[9].eType := E_ColumnType.NText;      ColumnInfo[9].nLength := 256;
ColumnInfo[10].sName := 'colNChar';     ColumnInfo[10].eType := E_ColumnType.NChar;     ColumnInfo[10].nLength := 10;
ColumnInfo[11].sName := 'colImage';     ColumnInfo[11].eType := E_ColumnType.Image;     ColumnInfo[11].nLength := 256;
ColumnInfo[12].sName := 'colNVarChar';  ColumnInfo[12].eType := E_ColumnType.NVarChar;  ColumnInfo[12].nLength := 50;
ColumnInfo[13].sName := 'colBinary';    ColumnInfo[13].eType := E_ColumnType.Binary;    ColumnInfo[13].nLength := 30;
ColumnInfo[14].sName := 'colVarBinary'; ColumnInfo[14].eType := E_ColumnType.VarBinary; ColumnInfo[14].nLength := 20;

IF fbPLCDBCreate.Table(
    hDBID:= 1,
    sTableName:= 'myNewTable', 
    pTableCfg:= ADR(ColumnInfo), 
    cbTableCfg:= SIZEOF(ColumnInfo))
THEN
    IF fbPLCDBCreate.bError THEN
        TcMessage:= fbPLCDBCreate.ipTcResult;
        nState := 255; 
    ELSE
        nState := 0;
    END_IF
END_IF