Skip to main content

SqlObject() Beispiele

Das folgende Beispiel zeigt eine einfache SQL-Abfrage von 2 Spalten auf die Tabelle "MyTable". Die Angabe "DEX_Workflow" ist die Angabe der Datenbankverbindung aus der "dbConn.json" und nicht der Datenbank-Name!
var sql = new SqlObject("MyTable", "DEX_Workflow");
    sql.addVarcharColumn("ColumnA AS MyTest"); /* Spaltennamen können umbenannt werden */
    sql.addDateColumn("ColumnB");
    sql.SQLWhere = "ColumnA LIKE '%Test%'";
    sql.SelectDistinct = true;
    sql.ExpectHits = false;
    sql.selectData();
util.log(sql.SQL); /* Schreibt den SELECT-Befehl in das Documents-Log */
if( sql.Result===false ){
     return sql.Error;
}
for(var i=0; i<sql.Result.length; i++){
    var strValue = sql.Result[i]["MyTest"];
    var dateValue = sql.Result[i]["ColumnB"];
}
Mit dem SELECT können auch Abfragen via JOIN über mehrere Tabellen ausgeführt werden.
var sql = new SqlObject("Invoice_Posting_Head", "DEX_Workflow");
    sql.addVarcharColumn("head.FileID AS FileID");
    sql.addVarcharColumn("head.InvoiceNumber AS InvoiceNumber");
    sql.addIntColumn("pos.ID AS ID");
    sql.addDecimalColumn("pos.Net AS Net");
    sql.SQLTable = sql.getFullTable("Invoice_Posting_Pos")    + " AS pos LEFT JOIN "
                 + sql.getFullTable("Invoice_Posting_Head") + " AS head ON "
                 + "(head.FileID=pos.FileID)";
    sql.SQLWhere = "(head.PostingStatus=" + sql.parseValueForSql("varchar", "workflow") + ") AND "
                 + "(head.FileID=" + sql.parseValueForSql("varchar", context.file.getid()) + ")";
    sql.ExpectHits = true;
/* Durch 'justtable' wird der Tabellen-Name nicht automatisch zusammengesetzt,
 * sondern es wird das Property SQLTable verwendet */
    sql.selectData("justtable");
if( sql.Result===false ){
    util.log(sql.Log); /* Schreibt das Log zum SQl-Objekt in das Documents-Log */
     return sql.Error;
}
/* Iteration über die Ergebnisse  */
for(var x=0; x<sql.Result.length; x++){
    var entry= sql.Result[x];
    var invNo = entry.InvoiceNumber;
    var lineID = entry.ID;
    var lineNet = entry.Net;
 }
Das folgende Beispiel schreibt einen Datensatz in die Datenbank und liefert den Wert der Auto-Inkrement-Spalte zurück.
var docFile = context.file;
var sql = new SqlObject("Invoice_Posting_Head", "DEX_Workflow");
      sql.addVarcharColumn("FileID", docFile.getid());
/* Optional: Mit Rückgabe der Auto-Inkrement ID */
      sql.ReturnAutoColumn = "ID";
      sql.ReturnAutoColWhere = "(FileID=" + sql.parseValueForSql("varchar", docFile.getid()) + ")";
      sql.insertValues();

if( sql.Result===false ){
     context.errrorMessage = sql.Error;
     return -1;
}
return sql.ReturnID; /* Rückgabe der Auto-Inkrement ID */
Das folgende Beispiel führt ein Update auf eine Tabellen-Zeile aus.
var docFile = context.file;
var sql = new SqlObject("Invoice_Posting_Head", "DEX_Workflow");
    sql.addVarcharColumn("InvoiceNumber", docFile.InvoiceNumber);
    sql.SQLWhere = "(FileID=" + sql.parseValueForSql("varchar", context.file.getid()) + ")";
    sql.updateValues();

if( sql.Result===false ){
    context.errrorMessage = sql.Error;
    return -1;
}
Das folgende Beispiel löscht DB-Einträge:
var sql = new SqlObject("Invoice_Posting_Head", "DEX_Workflow");
    sql.executeStatement("DELETE FROM " + sql.FullTable + " WHERE (UpdateTimestamp<'01.01.2020')");
if( sql.Result===false ){
    context.errrorMessage = sql.Error;
    return -1;
}