Archiv verlassen und diese Seite im Standarddesign anzeigen : Resultset bei ADO und BDE
Felddeklaration bei SQL-Server: Test char(10)
Eintrag in diesem Feld: 'Test'
Nun mein Problem:
Bei der BDE bekomme ich 'Test' zurückgeliefert.
Bei ADO wird 'Test......' zurückgeliefert. (. = leerzeichen)
Frage:
Wie bekomme kann ich bei ADO das gleiche Resultset wie bei der BDE erziehlen. (ohne TRIM im select Befehl)
mfg
Nather
Andreas Kosch
30.12.1999, 13:31
Hallo,
wurden die Patches (Bug-Fixes) zu Delphi 5 bereits eingespielt? Im ADO-Ordner sind entsprechende Meldungen dazu zu finden.
In der Originalfassung nehmen es die ADO-Komponenten von Delphi 5 sehr genau: <br>
- CHAR(10) liefert laut SQL-Standard immer die 10 Zeichen zurück, wobei der Rest Leerzeichen sind. <br>
- VARCHAR(10) liefert laut SQL-Standard nur die Zeichenanzahl zurück, die tatsächlich in dieser Tabellenspalte angelegt wurde. <br>
Es ist also kein ADO-Fehler, sondern ein Design-Fehler der Datenbank. Die BDE-Komponenten haben diese SQL-Regeln nur ignoriert. Die Patches passen nun nachträglich das ADO-Verhalten dem gewohnten BDE-Verhalten an.
Das Patch vom 12/16/99 ist aufgesielt aber es wird bei einen CHAR(10) der Rest weiterhin mit Leerzeichen aufgefüllt.
Ich habe es nun mit dem Ereignis OnGetText von TSringField gelöst.
procedure TDM_MWFert.Query_GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
Text := TrimRight(Sender.AsString);
end
vBulletin® v3.8.1, Copyright ©2000-2010, Jelsoft Enterprises Ltd.