Variablen in SQL-Update-Statement

Felix

Neues Mitglied
Hi zusammen,

und zwar versuche ich in der Programmieroberfläche von einem ERP-System in einem SQL Statement eine Variable einzubauen. Dabei bekomme ich aber immer eine Fehlermeldung. Soweit ich das versteh passt der Datentyp der Variable nicht zu dem Datenfeld in das sie geschrieben werden soll. X_USER ist aber auch ein Character sowie die Varriabel cVar.

Fehlermeldung:
Error 7200: AQE Error: State = S0000; NativeError = 2124; [SAP][Advantage SQL Engine]Invalid operand for operator: <assignment> Target Data Type: <Character> Source Data Type: <Integer> Target Name: X_USER -- Location of error in the SQL statement is: 32

Code:

|oQuery010, cVar, oDab010:dB:= 'waDAB010', oDabusr:dB:= 'waDABUSR'|


startseq

cVar := '067',
writeln(cVar),


oQuery010 := CreateObject('TBeAdsQuery'),
oQuery010.SQL:= 'Update "DAB010.ADT" SET '+"X_USER="+ cVar ,
DBExecSQL(oQuery010),
DestroyObject(oQuery010),


onerror
Meld("SQL.Exec fehlgeschlagen: "+GetErrorText()),
writeln(GetErrorText())
stopseq

Programmiersprache weis ich leider nicht genau welche das ist, entweder Delphi oder dBase 3
 

Anhänge

  • SQL.PNG
    SQL.PNG
    14,2 KB · Aufrufe: 366
Würde es mal so (oder so ähnlich) versuchen:
oQuery010.SQL:= 'Update "DAB010.ADT" SET X_USER="' + cVar + '"'
Oder, falls das notwendig ist, mit einfachen Anführungszeichen um cVar im Query.
 
Code:
oQuery010.SQL:= 'Update "DAB010.ADT" SET X_USER=" ' +cVar+'"',
so bekomme ich nun die Fehlermeldung : Error 7200: AQE Error: State = S0000; NativeError = 2121; [SAP][Advantage SQL Engine]Column not found: 067 -- Location of error in the SQL statement is: 32

klingt schon besser, Column sollte X_USER sein, ich vermute er ordnet die Variable dieser Spalte zu uns sucht dann nach der Variable als Spalte
 
Wenn das ein char sein soll, ist das wohl nicht ganz richtig oder? Aktuell ist das ja Oktal. Kannst du da nicht einfach den char hinterlegen?
Also: cVar:='7' ... oder falls die führende Null da gar nicht hin soll: cVar:='C'
Und wie genau das in dem Query eingebaut werden muss weiß ich leider auch nicht. Behandelt das DBMS "..." als Column?
 
Code:
|cVar:C:='067', oQuery010|

startseq
          writeln(cvar),

          oQuery010 := CreateObject('TBeAdsQuery'),

          oQuery010.SQL:= 'update "DAB010.ADT"     '+
                          'set X_USER = ''067''    ',
          DBExecSQL(oQuery010),
          DestroyObject(oQuery010),

onerror
       Meld("SQL.Exec fehlgeschlagen:    "+GetErrorText()),
       writeln(GetErrorText()),
stopseq

Hab es hier nochmal vereinfacht dargestellt, mit der oberen SQL schreibe ich in die Spalte X_USER den Character 067 als Benutzernummer.
Jetzt möchte ich eigentlich nur den String/Character 067 austauschen durch einen variablen String. Bekomme aber die Variable nicht in das SQL Statement.
Habe schon mit einer While Schleife und DBEdit und DBPost es ausprobiert aber da brauch er zu lange um 16600 Datensätze zu schreiben, da geht ein Update Statement wesentlich schneller.
 
Code:
 oQuery010.SQL := "update ""DAB010.ADT"" set " +
                   "X_USER = '"+cVar+"'",

Hiermit hat es jetzt funktioniert, es haben rechts und links um die Variable jeweils single quotes gefehlt. Vielen Dank für die Hilfe!
 
Zurück
Oben Unten