![]() |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Delphi-Quellcode:
function SQL_Beispiel:String;
var s:TSQL; begin s:=TSQL.Create; s.Add := 'Select'; s.Add := ' Wert1,'; s.Add := ' Wert2,'; s.Add := ' Wert3'; s.Add := 'From'; s.Add := ' Tabelle'; s.Add := 'Where'; s.Add := ' Wert4 = ' + s.oracleStr('Suchstring'); // sowas wie QuotedStr s.Add := ' and Wert5 > ' + s.oracleDateOfStr('01.12.2015'); // würde zu To_Date('01.12.2015','dd.mm.yyyy') Result:=s.Text; //s.Show //zum Anzeigen des Statements in einem Memo eines kleinen Popup-Forms. s.Free; end; |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Delphi-Quellcode:
type
TOracleHelper = class helper for TStrings public function oracleStr(const value: string): string; function oracleDateOfStr(const value: string): string; end; function SQL_Beispiel: String; var s: TStringList; begin s := TStringList.Create; try s.AddStrings([ 'Select', ' Wert1,', ' Wert2,', ' Wert3', 'From', ' Tabelle', 'Where', ' Wert4 = ' + s.oracleStr('Suchstring'), ' and Wert5 > ' + s.oracleDateOfStr('01.12.2015') ]); Result := s.Text; finally s.Free; end; end; |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Im alten D6 geht das so glaub ich leider noch nicht. Auch fehlen der Stringlist ja die schönen Umwandelfunktionen. Wobei man die in dem Beispiel gezeigten ja auch nicht wirklich braucht, wenn man stattdessen mit Parametern arbeitet, insofern kann man sich bei neueren Delphis durchaus die Mühe einer eigenen Klasse sparen.
Nur aus Neugier: Wie funktiert das eigentlich mit dem Datum als Parameter, wenn man das gewohnte deutsche Datumsformat im String hat "15.03.2013" die Datenbank aber intern mit US-Schema arbeitet? |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Zitat:
Delphi-Quellcode:
MyQuery.SQL.Text := 'INSERT INTO FooTable (FooDate,FooStr,FooInt) VALUES (:1,:2,:3);';
MyQuery.Params[0].AsDateTime := NOW; // Funktioniert nur, wenn FooDate in der Datenbank ein DateTime-Feld ist. MyQuery.Params[1].AsString := 'Die Frage aller Fragen:'; MyQuery.Params[2].AsInteger := 42; Mavarik Oder war das nicht die Frage? |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Zitat:
|
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
|
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
|
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Delphi-Quellcode:
MyQuery.Params[0].AsDateTime := StrToDatetime('15.03.2013'); //?? Da müssen aber die FormatSettingspassen oder?
MyQuery.Params[0].AsString := '15.03.2013'; //Was müsste wo eingestellt werden, damit das klappt? |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Delphi-Quellcode:
wird der Datentyp des Parameters festgelegt. Mit
As<Type>
Delphi-Quellcode:
wird also ein (Wide-)String-Parameter gesetzt, was hier aber wohl nicht gewünscht ist.
AsString
Delphi-Quellcode:
wäre hier der korrekte Ansatz.
AsDateTime
Was die FormatSettings anbelangt: Die können bei einem aktuelleren Delphi als zweiter Parameter an ![]() ![]() Wenn das Datum nicht als String, sondern als Werte für Tag, Monat und Jahr vorliegt, geht auch ein ![]() |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Delphi-Quellcode:
Geht übrigens nicht.
MyQuery.Params[0].AsDateTime := '20.01.2016'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 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-2025 by Thomas Breitkreuz