AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi How to pass a computed date variable to a where sql command
Thema durchsuchen
Ansicht
Themen-Optionen

How to pass a computed date variable to a where sql command

Ein Thema von piedad · begonnen am 7. Jun 2020 · letzter Beitrag vom 8. Jun 2020
Antwort Antwort
piedad

Registriert seit: 5. Jun 2020
10 Beiträge
 
#1

How to pass a computed date variable to a where sql command

  Alt 7. Jun 2020, 05:08
Datenbank: SQL • Version: QDA Version9 • Zugriff über: Delphi
Hi All,
I am Pretty new by Delphi and get stucked in a line of my Code:
when I pass my date (f.instance: 01.07.2020) works fine, if I Change this against the same value computed by a function drives in error.
I suspect is something trivial as a data Format or data onversion, but please I Need your help, give me a hint.
many thanks in Advance and regards

Enclosed my Code and Error Messages:

//////////////////////////////////
Error is coming from (***)
Beim Debugging:
variable dt contains the Right value: 01.07.2020
function GetDate contains (compile error on Expression)-> I calculate here just the first of next month
ERROR Message:
RUNTIME ERROR
Unknown data type for Parameter 'dt' when evaluating instruction REt($0,$0,$0,$0,").
...

///////////////////////////////////
Code:
function GetDate: string ;
var
strTimeReportFormat: String;
dateNow : DateTime;
myDate : TDateTime;
strDate : String;
dateReport : String;
Year, Month, Day : Word;

begin
dateNow := now;
dateNextMonth := IncMonth(dateNow );
DecodeDate(dateNextMonth, Year, Month, Day);
dateReport := EncodeDate(Year, Month, 1);
strDate := 'dd.mm.yyyy';
Result := FormatDateTime(strDate, dateReport);

end;
procedure Main:
var
….
strTimeMonth : String;
v : variant;
dt : TDateTime;
….
begin

….
strTimeMonth:=GetDate;
v := strTimeMonth;
dt := VarToDateTime(v);

qry.DatabaseName := 'QDA8';
qry.Sql.Add('SELECT MyDB.TargetDate,MyDB.column02,MyDB.column04,MyDB.c olumn06,MyDB.column08, MyDB,MyDB.column09 FIRMA,');
qry.Sql.Add('FROM MyDB');
qry.Sql.Add('WHERE TargetDate = :dt'); ---> (***)
qry.Sql.Add('Order by FIRMA');

…..strSQL := qry.Sql.GetText;
qry.Open;
strHeader := 'TargetDate;column02;column04;FIRMA;column09;colum n06;column08';
Writeln(tfFilePointer, strHeader);
tsSQLListe.Add(cTrenner + qry.FieldByName('TargetDate').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column02').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('FIRMA').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column04').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column06').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column08').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column09').AsString);
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: How to pass a computed date variable to a where sql command

  Alt 7. Jun 2020, 10:01
Hi

the colon ":" is the introducing character of a sql Parameter , in your case the parameter name is dt
You need to set this sql parameter.

qry.Params.ParamByName('dt').Value := < your date time value>

Best regards
Klaus
Klaus

Geändert von Klaus01 ( 7. Jun 2020 um 11:37 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#3

AW: How to pass a computed date variable to a where sql command

  Alt 7. Jun 2020, 10:09
Delphi-Quellcode:
qry.DatabaseName := 'QDA8';
qry.Sql.Add('SELECT MyDB.TargetDate, MyDB.column02, MyDB.column04, MyDB.column06, MyDB.column08, MyDB.column09, MyDB.FIRMA');
qry.Sql.Add('FROM MyDB');
qry.Sql.Add('WHERE TargetDate = :dt');
qry.Sql.Add('Order by FIRMA');
qry.ParamByName('dt').AsDateTime := IncMonth(Now); // <--instead of function GetDate

…..strSQL := qry.Sql.GetText;
qry.Open;
strHeader := 'TargetDate;column02;column04;FIRMA;column09;column06;column08';
Writeln(tfFilePointer, strHeader);
tsSQLListe.Add(cTrenner + qry.FieldByName('TargetDate').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column02').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('FIRMA').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column04').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column06').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column08').AsString);
tsSQLListe.Add(cTrenner + qry.FieldByName('column09').AsString);
  Mit Zitat antworten Zitat
piedad

Registriert seit: 5. Jun 2020
10 Beiträge
 
#4

AW: How to pass a computed date variable to a where sql command

  Alt 8. Jun 2020, 00:21
Thanks a lot Klaus,
it worked perfect.
see you
Piedad
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 04:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz