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

ExecuteDataReturn 1: 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.

ExecuteDataReturn 2: 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.