AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TAdoQuery Parameters.DataType ändert sich nach SQL.Add
Thema durchsuchen
Ansicht
Themen-Optionen

TAdoQuery Parameters.DataType ändert sich nach SQL.Add

Ein Thema von berens · begonnen am 23. Jan 2025 · letzter Beitrag vom 24. Jan 2025
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#2

AW: TAdoQuery Parameters.DataType ändert sich nach SQL.Add

  Alt 23. Jan 2025, 16:45
Grundsätzlich baue ich zuerst das SQL vollständig zusammen und dann werden die Parameter mit Werten befüllt. Ich käme nie auf die Idee ein SQL teilweise zu erstellen, dann Parameter zu befüllen und dann das SQL zu erweitern ...

Daher hab' ich das von Dir beschriebene Problem wohl auch noch nie gehabt.
Delphi-Quellcode:
  try
    CloseQueryAndClearSQLTextAndParameters(q);

      t := ' SELECT *' +
           ' FROM Termine' +
           ' WHERE '                               + sLineBreak +
           ' ( Termine.EinblendZeit <= :Jetzt1 ) ' + sLineBreak +
           ' AND '                                 + sLineBreak +
           ' ( Termine.AusblendZeit > :Jetzt2 ) ';

      q.SQL.Add(t);
      q.SQL.Add(' ORDER BY Termine.Von;');

      q.Parameters.ParamByName('Jetzt1').DataType := ftDateTime;
      q.Parameters.ParamByName('Jetzt1').Value := _Jetzt;
      q.Parameters.ParamByName('Jetzt2').DataType := ftDateTime;
      q.Parameters.ParamByName('Jetzt2').Value := _Jetzt;
    OpenQueryAndLogIfFailed(q, P);
  except
//...
  end;
Wobei nicht einfach so?
Delphi-Quellcode:
      q.SQL.Add(' SELECT *');
      q.SQL.Add(' FROM Termine');
      q.SQL.Add(' WHERE ');
      q.SQL.Add(' ( Termine.EinblendZeit <= :Jetzt1 ) ');
      q.SQL.Add(' AND ');
      q.SQL.Add(' ( Termine.AusblendZeit > :Jetzt2 ) ');
      q.SQL.Add(' ORDER BY Termine.Von;');

      q.Parameters.ParamByName('Jetzt1').DataType := ftDateTime;
      q.Parameters.ParamByName('Jetzt1').Value := _Jetzt;
      q.Parameters.ParamByName('Jetzt2').DataType := ftDateTime;
      q.Parameters.ParamByName('Jetzt2').Value := _Jetzt;
Dürfte jetzt auch nicht unbedingt schlechter wartbar sein oder unübersichtlicher.

Gut, wenn es eine Funktion oder Prozedur ist und T von außen kommt, dann ist
Delphi-Quellcode:
      q.SQL.Add(t);
      q.SQL.Add(' ORDER BY Termine.Von;');
schon ok.

Aber nichtsdestotrotz: Parameter erst befüllen, wenn das SQL fertig ist, dann gibt es keinen Grund für irgendeine Routine das SQL erneut zu parsen und dabei ggfls. eine andere Entscheidung bezüglich der Parametertypen treffen zu sollen können müssen.
  Mit Zitat antworten Zitat
 

 

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 03:24 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