Autor Beitrag
Arne Danikowski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 19.12.08 13:43 
Hallo,

ich finde hier irgendwie nicht die richtige Lösung.
Ich möchte über einen MonthCalendar ein SQLQuery erstellen, welches nur die Datensätze anzeigt, mit dem markiertem Datum aus dem MonthCalendar.

Ich habe eine Access Datenbank das Feld ist ein Datumsfeld mit Format kurz (tt.mm.jjjj)

folgendes haben ich versucht:

ausblenden Delphi-Quelltext
1:
DM.ADOQuery1.SQL.Text := 'Select * From Eintrag WHERE DATUM = '+ DateToStr(MonthCalendar1.Date);					


ich erhalte allerding die Fehlermeldung Syntaxfehler in Zahl in Abfrageausdruck 'Datum = 19.12.2008'

kann da jemand helfen?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.12.08 13:49 
Versuch es mal mit einer parametrisierten Abfrage:
ausblenden Delphi-Quelltext
1:
2:
DM.ADOQuery1.SQL.Text := 'Select * From Eintrag WHERE DATUM = :datum';
DM.ADOQuery1.Parameters.ParamByName('datum').Value := MonthCalendar1.Date;


Ohne Gewähr, ich mache normalerweise nix mit ADO.
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 19.12.08 13:57 
Da bekomme ich die Fehlermeldung:

ADOQuery1: Parameter 'Datum' nicht gefunden
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.12.08 14:09 
Komisch, zeig mal den aktuellen Code.
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 19.12.08 14:15 
Ich hatte die Zeilen in falscher Reihenfolge
so sieht das auch und nun bekomme ich zwar keine Fehlermeldung, aber es funktioniert nicht. Eigentlich passiert gar nichts.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm2.MonthCalendar1Click(Sender: TObject);

begin
DM.ADOQuery1.SQL.Text := 'Select * From Eintrag WHERE DATUM = :datum ORDER BY DATUM';
DM.ADOQuery1.Parameters.ParamByName('datum').Value := MonthCalendar1.Date;
DM.ADOQuery1.open;

end;
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.12.08 14:24 
Nächster Versuch (ich hab von Access keine Ahnung, sag ich gleich dazu):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm2.MonthCalendar1Click(Sender: TObject);
begin
  DM.ADOQuery1.Close;
  DM.ADOQuery1.SQL.Text := 'Select * From Eintrag WHERE DATUM = :datum ORDER BY DATUM';
  DM.ADOQuery1.Parameters.ParamByName('datum').DataType := ftDate;
  DM.ADOQuery1.Parameters.ParamByName('datum').Value := MonthCalendar1.Date;
  DM.ADOQuery1.open;
end;
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 19.12.08 14:28 
voher hast du denn ftdate? Wie deklariere ich den? Ist das nur ne Variable?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.12.08 14:36 
Das ist eine Konstante (Unit DB).
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 19.12.08 14:39 
:) hab keine DB Unit
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 19.12.08 14:43 
Habe die USES mal hinzugefügt. Bring aber leider uch nichts. egal, welches Datum ich über den MonthCalendar auswähle, er springt immer zum ersten Datensatz.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.12.08 14:44 
Gut, dann anders (ansonsten muss ich das zu Hause mal mit einem "richtigen" Delphi versuchen):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm2.MonthCalendar1Click(Sender: TObject);
begin
  DM.ADOQuery1.Close;
  DM.ADOQuery1.SQL.Text := 'Select * From Eintrag WHERE DATUM = :datum ORDER BY DATUM';
//  DM.ADOQuery1.Parameters.ParamByName('datum').DataType := ftDate;
  DM.ADOQuery1.Parameters.ParamByName('datum').Value := trunc(MonthCalendar1.Date);
  DM.ADOQuery1.open;
end;


[edit] Hö? Nach einem Open springt der Datensatzzeiger immer auf den ersten Datensatz, das hat aber mit der Abfrage an sich nichts zu tun. [/edit]