Autor |
Beitrag |
Masterjoh
      
Beiträge: 20
Win XP Professional
D7 Architect
|
Verfasst: Mo 18.07.05 12:27
Hallo Leute,
hab ein Probelm mitmeiner Query und im moment noch keine gescheite Lösung gefunden. Das Problem ist, dass ích eine String Variable benutze, um den SqlText zu speichern und dann zur Laufzeit an die Query übergebe, aber mein Parameter nicht erkannt wurde. Nach einigem Probieren habe ich herrausgefunden, dass der Text über 255 Zeichen hat, also habe ich es mit WideString versucht, aber auch dass klappte nicht. Hat jemand ne Idee, woran es liegen könnte, oder wie man es anders lösen kann?
Hier der Sourcecode zur Veranschaulichung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var TmpBewNr : Integer; BewNr, TempErfassNr : String; SQLText : wideString;
begin
TempErfassNr := ErfassNr;
dmLager.qrBewegungen.Close; SqlText := 'INSERT INTO Bewegungen(BewDatum,Verbucht,BuchKey,Zugang,Abgang,'; SqlText := SqlText + 'KommmissionsZugang,KommissionsAbgang,Madant,FilialNr,'; SqlText := SqlText + 'LagerNr,ArtikelNr,ArtBez,Gespeichert,BewNr) '; SqlText := SqlText + 'SELECT DATE(),false,01,0,0,0,0,Mandant,FilialNr,'; SqlText := SqlText + 'LagerNr,ArtikelNr,ArtBez,1 FROM ZugehendeArtikel AS Zu '; SqlText := SqlText + 'WHERE Zu.ErfassNr = :@lErfassNr '; dmLager.qrBewegungen.SQL.Text := SQLText; dmLager.qrBewegungen.Parameters.ParamByName('@lErfassNr').Value := TempErfassNr; dmLager.qrBewegungen.ExecSQL;
end; |
Gruß, Masterjoh
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 18.07.05 12:41
n widestring ist nur ein unicode-string, sprich jedes 2. zeichen ist ne null.
das wird dich auch nicht weiterbringen, der typ string von delphi kann schon von haus aus mit bis zu 2 gb inhalt zurechtkommen
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Masterjoh 
      
Beiträge: 20
Win XP Professional
D7 Architect
|
Verfasst: Mo 18.07.05 13:15
Hallo Retnyg,
danke für die Antwort; habe mir schon so etwas in der Richtung gedacht. Jedoch liegt es tatsächlich an der Größe, denn als ich im Debug-Modus, den Wert ändern wollte und bestätigt habe, kam als Fehlermeldung, dass der String über 255 Zeichen habe. So kam ich erst darauf. Irgendwie verwirrend, nicht wahr?
|
|
mikhal
      
Beiträge: 109
Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
|
Verfasst: Mo 18.07.05 15:31
Ergänze deinen SQL-String mal in jeder Zeile um einen Zeilenumbruch (#13#10) dann hört der Spuk auf.
Du schreibst alles in eine Zeile und dann sind es offensichtlich mehr als 255 Zeichen und das Kann die Query-Komponente nicht. Besser als ein einzelner String ist eine TStringList und die Methode Add für die einzelnen Zeilen.
Grüße
Mikhal
_________________ Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 18.07.05 15:32
tja, scheint an deiner ado-komponente zu liegen (welche ists denn ?)
aber irgendwie sonderbar, denn bei sql-statements ist es eher die regel, dass diese länger als 255 zeichen sind 
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Masterjoh 
      
Beiträge: 20
Win XP Professional
D7 Architect
|
Verfasst: Mo 18.07.05 15:41
 habe den Fehler gefunden, muss mich echt schämen, denn dass ganze Problem begründete sich nur darauf, dass ich der Query irgendwann einmal die Verbindung weggenommen habe, kaum habe ich die Connection richtig gesetzt geht es auch wieder.
Sorry, dass ich euch wegen solchen Lapalien Grübeln lassen hab.
Danke für die Unterstützung!
Joh
|
|
|