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
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. |
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