ExecuteDataReturn
Diese Methode führt eine Abfrage an eine NoSql-Datenbank aus, welche zuvor über den I_NoSqlQueryBuilder-Funktionsbaustein eingestellt wurde. Dabei wird die übergebene Instanz des Typs FB_NoSqlResultEvt mit Rückgabewerten gefüllt.
Syntax
METHOD ExecuteDataReturn : BOOL
VAR_INPUT
hDBID : UDINT;
iNoSSQLQueryBuilder: I_NoSQLQueryBuilder;
pNoSQLResult: POINTER TO FB_NoSQLResultEvt;
END_VAR
Eingänge
Name | Typ | Beschreibung |
---|---|---|
hDBID | UDINT | ID der eingestellten Datenbankkonfiguration |
iNoSQLQueryBuilder | I_NoSQLQueryBuilder | Vorparametrierter QueryBuilder-Funktionsbaustein, welcher die abzuschickende Abfrage definiert. |
pNoSQLResult | POINTER TO FB_NoSSQLResultEvt | Gibt die Adresse zum FB_NoSQLResultEvt an, mit dem die Ergebnisse ausgelesen werden können. |
Rückgabewert
Name | Typ | Beschreibung |
---|---|---|
ExecuteDataReturn | BOOL | Zeigt den Status der Methode. Liefert TRUE, sobald die Methodenausführung beendet ist, also auch im Fehlerfall. |
nDataCount | UDINT | [optional] Anzahl der zurückgelieferten Datensätze |
Nutzt den QueryBuilder, um die entsprechende Abfrage auszuführen.
VAR
fbNoSqlQuery : FB_NoSQLQueryEvt(sNetID := '', tTimeout := T#5S);
fbNoSQLQueryBuilder_DocumentDB: FB_NoSQLQueryBuilder_DocumentDB
FindQueryOptions : T_QueryOptionDocumentDB_Find;
fbNoSqlResult : FB_NoSQLResultEvt(sNetID := '', tTimeout := T#5S);
myDBID : UDINT := 1;
sFilter : STRING(255);
sSort: STRING(255);
sProjection: STRING(255);
TcMessage : I_TcMessage;
END_VAR
// set QueryInputs:
fbNoSQLQueryBuilder_DocumentDB.eQueryType := E_DocumentDbQueryType.Find;
fbNoSQLQueryBuilder_DocumentDB.pQueryOptions := ADR(FindQueryOptions);
fbNoSQLQueryBuilder_DocumentDB.cbQueryOptions := SIZEOF(FindQueryOptions);
//set Find Parameter ([optional] sort, projection):
sFilter := '{}'; // read all data from database
FindQueryOptions.pFilter:= ADR(sFilter);
FindQueryOptions.cbFilter:= SIZEOF(sFilter);
// call nosql query:
IF fbNoSqlQuery.ExecuteDataReturn(myDBID, fbNoSqlQuery, ADR(fbNoSqlResult)) THEN
IF fbNoSqlQuery.bError THEN
TcMessage := fbNoSqlQuery.ipTcResult;
nState := 255;
ELSE
nState := nState+1;
END_IF
END_IF
Zuvor wird der FB_NoSQLQueryEvt über den FB_NoSQLQueryBuilder_DocumentDB parametriert. Je nach Querytyp gibt es verschiedene Optionen, wie die des T_QueryOptionDocumentDB_Find, um den Filter, die Sortierung oder die Projektion zu definieren.