![]() |
Datenbank: MSSQL • Version: 2008 R2 • Zugriff über: TADOConnection
ADO Strings autom. abschneiden?
Hallo DP,
Gibt es im Delphi 2009 eine Option, einen Parameter o.ä. , mit dem man erreichen kann, dass zu lange Strings beim INSERT oder UPDATE in ein VARCHAR-Feld auf die maximale Länge des Feldes abschnitten werden? z.B. "Tabelle" mit dem Feld "text" VARCHAR(2)
Delphi-Quellcode:
... soll, anstatt den Datensatz nicht zu speichern, entsprechend 'AB' in "text" speichern. Das ganze automatisch, ohne das ich per Hand die Feldlänge ermitteln und den String zurecht schneiden muß.
sSql := 'INSERT INTO Tabelle (text) VALUES (:DerString)';
AdoQuery.SQL.Text := sSql; AdoQuery.Parameters.ParamByName('DerString').Value = 'ABC'; AdoQuery.Parameters.ParamByName('DerString').DataType := ftString; AdoQuery.Exceute; |
AW: ADO Strings autom. abschneiden?
Delphi-Quellcode:
sSql := 'INSERT INTO Tabelle (text) VALUES (Cast(:DerString as NVarchar(2)))';
|
AW: ADO Strings autom. abschneiden?
Dazu brauchst Du aber auch wieder die Feldlänge.
|
AW: ADO Strings autom. abschneiden?
verwegen:
Delphi-Quellcode:
sSql := 'set ansi_warnings off INSERT INTO Tabelle (text) VALUES (:DerString) set ansi_warnings on';
|
AW: ADO Strings autom. abschneiden?
Das Wort text ist in vielen Datenbanken ein reservierter Bezeichner was man nicht als Feld- oder Tabellenname verwenden sollte.
Delphi-Quellcode:
// neuen Datensatz einfügen
// Performance ist etwas geringer als beim direkten INSERT // aber die String-Felder werden autom. abgeschnitten AdoQuery.SQL.Text := 'SELECT infotext FROM Tabelle WHERE 0=1'; AdoQuery.Open; AdoQuery.Append; AdoQuery['infotext'] := 'ABC'; AdoQuery.Post; // VCL generiert im Hintergrund einen INSERT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz