Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Befehl zum Ausgeben von daten in einen bestimmten Bereic (https://www.delphipraxis.net/25099-sql-befehl-zum-ausgeben-von-daten-einen-bestimmten-bereic.html)

Kruemel2oo2 2. Jul 2004 07:47

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
?? könntest mir das bitte sagen.

:hi:

Sharky 2. Jul 2004 07:54

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
Von welchen "Variablen" sprichst Du denn? Ich muss gestehen das ich aus deinem "Satz" nicht ganz schlau werde :stupid:

Kruemel2oo2 2. Jul 2004 08:06

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
Naja den Variablen die ich von den beiden DateTimepickern nehme. Hatte doch gesagt 2 DateTimepicker wo ich je Tag Monat Und Jahr auslese. Naja und die sollen nachern den Bereich angeben. Die muss ich ja denn auch zusammen fassen zu diesen Date. Aba ich weiß nicht ganz wo ich die in den angegebenen Quelltext reinsetzen muss und ejrlihc gesagt auch net wie :(.

hatte doch meinen Quelltext auch hier geposted also mein select befehl dasieht man die gemeinten Variablen :D

Sharky 2. Jul 2004 08:13

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
Hai Kruemel2002,

überlege doch einmal ;-)

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Text := 'SELECT *' + #10 
      + 'FROM Booking' + #10 
      + 'WHERE CAST(CONCAT(jahr,"-",monat,"-",tag) AS DATE) BETWEEN :start AND :ende' +#10 
      + 'ORDER BY name, uhrzeit';
    ParamCheck := True;
    Params.ParamByName('start').AsString := FormatDateTime ('yyyy-m-d',[color=red]DateTimePicker1.Date[/color]);
    Params.ParamByName('ende').AsString := FormatDateTime ('yyyy-m-d',[color=red]DateTimePicker2.Date[/color]);
    Open;
  end;
end;
Jetzt siehst Du genau wo ich das Datum aus den beiden DateTimePickern übergebe. Wenn Du das Datum vorher in eine Variable speicherst muss halt diese übergeben werden.

Kruemel2oo2 2. Jul 2004 08:16

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
ups

bin manchmal nen biscen schwervon begriff :D fetten dank ich werds mal ausprobieren :D

Kruemel2oo2 2. Jul 2004 08:21

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
-.- bin dumm

Kruemel2oo2 2. Jul 2004 08:29

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
hmm also wenn ich das ausführe stürtz mein prog ab er mein "Merkmal nicht verfügbar"

Robert_G 2. Jul 2004 09:14

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
Zitat:

Zitat von Sharky
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Text := 'SELECT *' + #10 
      + 'FROM Booking' + #10 
      + 'WHERE CAST(CONCAT(jahr,"-",monat,"-",tag) AS DATE) BETWEEN :start AND :ende' +#10 
      + 'ORDER BY name, uhrzeit';
    ParamCheck := True;
    Params.ParamByName('start').AsString := FormatDateTime ('yyyy-m-d',[color=red]DateTimePicker1.Date[/color]);
    Params.ParamByName('ende').AsString := FormatDateTime ('yyyy-m-d',[color=red]DateTimePicker2.Date[/color]);
    Open;
  end;
end;

:gruebel:
Was machst du denn da?
  • Den #34 wird mySQL (wie die meisten DBs) als Start/Ende eines Identifiers ansehen, NICHT als String. (Das könnte das "Merkmal" sein ;) )
  • Warum erst ein Typcast auf Date, wenn du ihm die Werte als String gibst :shock: :?:

So dürfte ein Schuh draus werden: ;)
Delphi-Quellcode:
with Query do
begin
  SQL.Text :=
    'SELECT *' + #10 +
    'FROM  Booking' + #10 +
    'WHERE CAST(CONCAT(jahr' + #10 +
    '                 ,''-''' + #10 +
    '                 ,monat' + #10 +
    '                 ,''-''' + #10 +
    '                 ,tag) As Date) BETWEEN :i_Start AND :i_Ende' + #10 +
    'ORDER BY Name' + #10 +
    '        ,Uhrzeit';
  // Parse Statement um Variablen zu erkennen
  ParamCheck := True;
  // Parameterzuweisung
  with Params do
  begin
  // Die Zuweisung des DataType soll verhindern, dass die MidWare irgendwelchen Käse fabriziert
    ParamByName('i_Start').DataType := ftDate;
    ParamByName('i_Start').Value   := DateTimePicker1.Date;
    ParamByName('i_Ende').DataType := ftDate;
    ParamByName('i_Ende').Value    := DateTimePicker2.Date;
  end;
  // Ausführen
  Open;
end;

Sharky 2. Jul 2004 09:20

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
Zitat:

Zitat von Robert_G
...
  • Den #34 wird mySQL (wie die meisten DBs) als Start/Ende eines Identifiers ansehen, NICHT als String. (Das könnte das "Merkmal" sein ;) )
  • Warum erst ein Typcast auf Date, wenn du ihm die Werte als String gibst :shock: :?:
....

Hai Robert,
darauf habe ich gewartet ;-)
Warum ich es als String übergeben? Weil es als .AsDate nicht funktionierte. Ich vermute das in diesem Fall das Datum im "falschen Format" ankommt. Da die Zahlen in den einzelnen Felder ja 1/2/3 und nicht 01/02/03 sind wird (so vermute ich) bei dem Typcasting das Datum intern auch so verwendet z.B. 2004-5-1 und nicht 2004-05-01.

Mit dem Start/Ende könntest Du recht haben. Obwohl es bei mir hier ohne Probleme funktionirt.

Kruemel2oo2 2. Jul 2004 09:22

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
 
Auch hier stürzt das prog ab und gibt die Fehlermeldung "Merkmal nicht verfügbar".


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr.
Seite 3 von 4     123 4      

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