ReadAsStruct

Diese Methode liest eine vorgegebene Anzahl an Datensätzen aus den gepufferten Ergebnisdaten aus. Dabei wird eine Struktur oder ein Array einer Struktur angegeben, in das die Daten geschrieben werden sollen. Das Datentypschema dieser Struktur sollte dabei möglichst dem der ausgelesenen Daten entsprechen. Dabei werden die Variablennamen und die des Datensatzes verglichen. Mit Hilfe einer Validierung gibt es die Möglichkeit, Abweichungen zu erkennen und darauf zu reagieren.

Falls die Anforderung besteht, unterschiedliche Namen in der Datenbank und in der SPS zu verwenden, können in der Struktur die Namen mit dem Attribut ‚ElementName mit dem zugeordneten Namen aus der Datenbank beschrieben werden.

Syntax

METHOD ReadAsStruct: BOOL
VAR_INPUT
    nStartIndex: UDINT := 0;
    nRecordCount: UDINT := 1;
    pData: POINTER TO BYTE;
    cbData: UDINT;
    bValidate: BOOL := FALSE;
    pNoSQLValidation : POINTER TO FB_NoSQLValidationEvt;
    bDataRelease: BOOL := TRUE;
END_VAR

ReadAsStruct 1: Eingänge

Name

Typ

Beschreibung

nStartIndex

UDINT

Gibt den Index des ersten zu lesenden Datensatzes an.

nRecordCount

UDINT

Gibt die Anzahl der zu lesenden Datensätzen an.

pData

POINTER TO BYTE

Adresse des Strukturarray, in das die Datensätze geschrieben werden sollen.

cbData

UDINT

Gibt die Größe des Strukturarray in Byte an.

bValidate

BOOL

Rückgabedaten werden mit pData Strukturarray verglichen und ggf. angepasst.

pNoSQLValidation

POINTER TO FB_NoSQLValidationEvt

Adresse des FB_NoSQLValidationEvt-Bausteins, der weitere Informationen zur Validierung des Aufrufs zur Verfügung stellt.

bDataRelease

BOOL

Gibt die gepufferten Daten wieder frei.

ReadAsStruct 2: Rückgabewert

Name

Typ

Beschreibung

ReadAsStruct

BOOL

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

Beispiel:

VAR
    fbNoSQLResult: FB_NoSQLResultEvt(sNetID := '', tTimeout := T#5S);
    aRead : ARRAY[0..2] OF ST_MyDataStruct;
    fbNoSQLValidation : FB_NoSQLValidationEvt(sNetID := '', tTimeout := #5S);
END_VAR
IF fbNoSQLResult.ReadAsStruct(
    nStartIndex:= 0,
    nRecordCount:= 3,
    pData:= ADR(aRead),
    cbData:= SIZEOF(aRead),
    bValidate:= TRUE,
    pNoSQLValidation:= ADR(fbNoSQLValidation),
    bDataRelease:= TRUE)
THEN
    IF fbNoSQLResult.bError THEN
        TcMessage := fbNoSQLResult.ipTcResult;
        nstate := 255;
    ELSE
        nstate := nstate+1;
    END_IF
END_IF