AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Parameterverwendung bei DB-, Feld- und Tabellennamen

Parameterverwendung bei DB-, Feld- und Tabellennamen

Ein Thema von freejay · begonnen am 14. Jan 2016 · letzter Beitrag vom 15. Jan 2016
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.153 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 15. Jan 2016, 11:37
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?
Überlass doch der Datenbank die Speicherung...

Code:
MyQuery.SQL.Text := 'SELECT * FROM :TabName;';
MyQuery.ParamByName('TabName').AsString := TabellenName;
MyQuery.Open;
Fast... Beispiel INSERT mit Datum

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?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 15. Jan 2016, 14:24
Oder war das nicht die Frage?
Doch, nur machst du es dir mit NOW() einfach. Wie sieht es bei einem Datum, dass mir im Programm als String vorliegt aus? Muss da Delphi die Umwandlung machen?

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?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#3

AW: Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 15. Jan 2016, 14:34
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?
Mit der Zuweisung As<Type> wird der Datentyp des Parameters festgelegt. Mit AsString wird also ein (Wide-)String-Parameter gesetzt, was hier aber wohl nicht gewünscht ist. AsDateTime wäre hier der korrekte Ansatz.

Was die FormatSettings anbelangt: Die können bei einem aktuelleren Delphi als zweiter Parameter an StrToDateTime mitgegeben werden (TFormatSettings.Invariant).

Wenn das Datum nicht als String, sondern als Werte für Tag, Monat und Jahr vorliegt, geht auch ein EncodeDate.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.153 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 15. Jan 2016, 14:58
MyQuery.Params[0].AsDateTime := '20.01.2016' Geht übrigens nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#5

AW: Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 15. Jan 2016, 15:43
Makros werden oft direkt "ersetzt", aber man kann ja vor Zuweisung an das Makro die Escape-Funktion für Bezeichner darauf anwenden.

bei PgDAC z.B. TPgTextConverter.EscapeString
quote_ident in der DB

Und eventuell wird dir auch eine Typkonvertierung angeboten

SQL-Code:
SELECT * FROM 'table'::regtype -- SELECT * FROM CAST('table' AS regtype)
SELECT * FROM :table::regtype -- SELECT * FROM CAST(:table AS regtype)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Jan 2016 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 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