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;
}
No Comments