Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte.

03/01/2012 - 10:58 von Stefan Koschke | Report spam
Hallo,

erst mal ein gesundes neues jahr und schon neue Probleme:

Ich bekomme beim Schreiben in eine Datenbank den im Betreff genannten
Fehler.
Die Ursache ist klar, bei

query.fieldbyname(cInhalt).AsString := x;

ist x lànger als die in der DB vorgegebene Feldlànge.

Wie aber fange ich so etwas ab?
mit
try
query.edit;
query.fieldbyname...
query.post;
except
irgendwas
end;

wird dann der gleiche Laufzeitfehler in der aufrufenden Funktion gefeuert!

Gibt es eine mir bisher unbekannte Funktion, welche nur die Menge Text
in das Feld schreibt die vorgesehen ist und den Rest abschneidet oder
muß ich an jeder Stelle im Programm erst die verfügbare Lànge ermitteln
und den String manuell kürzen?
Das wàren ein paar Hundert Stellen, die möchte ich nicht unbedingt alle
anpassen :-(

Prinzipiell ist die Datenbank richtig voreingestellt, aber durch
Kommunikationsfehler können eben mal zu lange Strings entstehen.

Wie gehe ich nun am besten vor?

Danke
Ciao
Stefan
 

Lesen sie die antworten

#1 Stefan Graf
03/01/2012 - 20:42 | Warnen spam
Am 03.01.2012 10:58, schrieb Stefan Koschke:
Hallo,

erst mal ein gesundes neues jahr und schon neue Probleme:

Ich bekomme beim Schreiben in eine Datenbank den im Betreff genannten
Fehler.
Die Ursache ist klar, bei

query.fieldbyname(cInhalt).AsString := x;

ist x lànger als die in der DB vorgegebene Feldlànge.

Wie aber fange ich so etwas ab?
mit
try
query.edit;
query.fieldbyname...
query.post;
except
irgendwas
end;

wird dann der gleiche Laufzeitfehler in der aufrufenden Funktion
gefeuert!

Gibt es eine mir bisher unbekannte Funktion, welche nur die Menge Text
in das Feld schreibt die vorgesehen ist und den Rest abschneidet oder
muß ich an jeder Stelle im Programm erst die verfügbare Lànge
ermitteln und den String manuell kürzen?
Das wàren ein paar Hundert Stellen, die möchte ich nicht unbedingt
alle anpassen :-(

Prinzipiell ist die Datenbank richtig voreingestellt, aber durch
Kommunikationsfehler können eben mal zu lange Strings entstehen.

Wie gehe ich nun am besten vor?



In dem man das ganz anders aufruft ;-)

query.SQL.Clear;
query.SQL.Add ('update <tab> set <col>=x where <ref>=???');

try
query.ExecSQL;
except
...
end;

Ansonsten einfach

query.fieldbyname(cInhalt).AsString := Copy (x, 1,
query.fieldbyname(cInhalt).Size);

Stefan Graf

Ähnliche fragen