Entwickler-Ecke
Datenbanken - UPDATE mit TQuery erzeugt Fehler
Dan75 - Mo 02.09.02 11:40
Titel: UPDATE mit TQuery erzeugt Fehler
Hallo,
Habe einen langen SQL - UPDATE Befehl mit über 20 Parametern:
Quelltext
1: 2: 3: 4:
| TQuery.Close; TQuery.Clear; TQuery.Add('UPDATE tabelle SET feld1 = :param1, ...., feld21 = :param21'); TQuery.ExecSQL -> Fehler |
Dies funktioniert einmal, manchmal zweimal dann bekomme ich eine Fehlermeldung: "EDBEngineError: Allgemeiner SQL Fehler. Die Zeichenfolgendaten wurden rechts abgeschnmitten (Null)."
Weiß jemand Rat? Wieso funktioniert dies nur sporadisch?
Daniel
Udontknow - Mo 02.09.02 12:22
Hmmm... Du meinst sicher TQuery.
SQL.Add/Clear, oder?
Kann es sein, daß du über die BDE SQL-Zeilen eben nur bis zu einer bestimmten Länge (z.B. 255) übergeben kannst? Je nach Parameterwerte kommt dann manches Mal die Zeilenlänge an bzw. über die 256 Zeichen.
Probiere folgendes:
Füge jeden param in eine eigene Zeile ein.
Quelltext
1: 2: 3: 4: 5:
| Query.SQL.Add('Update tabelle set'); Query.SQL.Add(' feld1 =:param1,'); Query.SQL.Add(' feld2 =:param2,'); ... Query.SQL.Add(' feld21 =:param21'); |
Cu, :D
Udontknow
Steffer - Di 03.09.02 11:59
Alternative ist Query.SQL.Text:= ....
Dan75 - Di 03.09.02 21:14
Danke für die Antworten,
habe das Problem inzwischen gelöst.
Es war auch an einer anderen Stelle als an der oben beschriebenen zu finden.
Hatte nämlich
Quelltext
1:
| TQuery.Params[Index].AsString := 'Blabla'; |
verwendet statt
Quelltext
1:
| TQuery.ParamByName('ParamName').AsString := 'BLaBLa'; |
Ich weiß zwar nicht warum die erste Möglichkeit nicht funktionierte, aber die zweite ist ja auch viel komfortabler.
Viele Grüsse
Daniel
Silent Bob - Mi 23.10.02 13:44
Tja ... ich habe genau denselben Fehler, trotz sehr einfach gehaltener Anweisung ...
Quelltext
1: 2: 3: 4:
| TQuery.Close; TQuery.Clear; TQuery.Add('UPDATE Linearity SET NumOfMeasPos=200 WHERE LinNr=3'); TQuery.ExecSQL; |
Ich erhalte ebenfalls eine Fehlermeldung vom Typ EDBEngineError : "Allgemeiner SQL Fehler. Too few parameters."
Kann mir da jemand hefen?
Gruss
Silent Bob
Silent Bob - Mi 23.10.02 13:58
Diesselbe Fehlermeldung erhalt ich auch bei der INSERT-Anweisung
Quelltext
1:
| INSERT INTO Linearity (UDNr, UDName, NumOfMeasPositions) VALUES (4, Peter, 500)' |
Udontknow - Mi 23.10.02 14:37
Hi!
Du hasst deinen Stringwert nicht in Hochkommata gesteckt.
Quelltext
1:
| INSERT INTO Linearity (UDNr, UDName, NumOfMeasPositions) VALUES (4, 'Peter', 500); |
Das Hochkomma kannst du in Delphi erzeugen, indem du einfach zweimal das Zeichen machst (Beispiel: MeinStr:='Ich schreie durch den Raum ''Peter!'''). Alternativ kannst du die Anführungsstriche nehmen.
Cu,
Udontknow
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!