AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datum vergleichen

Ein Thema von Barzy2x · begonnen am 18. Dez 2002 · letzter Beitrag vom 19. Dez 2002
Antwort Antwort
Seite 2 von 2     12   
Barzy2x

Registriert seit: 1. Dez 2002
Ort: Ilmenau
23 Beiträge
 
#11
  Alt 18. Dez 2002, 19:38
Danke, das läuft. Zwar meldet delphi einen Fehler wenn es keine passenden datensätze findet, aber das kann ich sicher mit einer TRY EXCEPT bedingung abfangen.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#12
  Alt 19. Dez 2002, 08:10
Hallo Barzy2x,

welchen Fehler meldet Paradox denn? Dass keine Datensätze gefunden werden ist ja kein Fehler, sondern wird durch eine leere Datenmenge gekennzeichnet, also könnte noch woanders ein Wurm drin sein.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Barzy2x

Registriert seit: 1. Dez 2002
Ort: Ilmenau
23 Beiträge
 
#13
  Alt 19. Dez 2002, 08:28
Es wird ein, meiner Meinung nach, recht ungewöhnlicher Fehler gemeldet:
Ungültiges Schlüsselwort Symbolstring SELECT. Dies wird gemeldet wenn keine Datensätze gefunden werden und wenn die Abfrage ein zweites Mal ausgeführt wird.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#14
  Alt 19. Dez 2002, 08:48
Hallo Barzy2x,

ich denke es ist eher umgekehrt: Es wird eine leere Datenmenge angezeigt, weil das SQL Statement nicht korrekt ist. Poste doch mal den aktuellen Code, der der SQL Eigenschaft seinen Inhalt gibt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Barzy2x

Registriert seit: 1. Dez 2002
Ort: Ilmenau
23 Beiträge
 
#15
  Alt 19. Dez 2002, 11:05
Das Problem liegt nicht darin das eine leere Datenmenge angezeigt wird. Die SQL Anweisung zeigt beim ersten Ausführen Datensätze an, wenn diese vorhanden sind. Wenn ich diese Abfrage jedoch nochmal starte wird der oben beschriebene Fahler angezeigt. Folgenden Code benutze ich zur Abfrage
Code:
procedure TTerminVerwaltung.BitBtn1Click(Sender: TObject);
begin

DatenbankOeffnen.Edit1.Text = 'Testtabelle.db'
Query1.ParamByName('CurDate').AsDate := date;
Query1.SQL.Add('SELECT Uhrzeit,Datum,Beschreibung FROM TestTabelle WHERE datum < :CurDate')
Query1.Open;
END;
Muss ich eventuell diese Abfrage in irgendeiner Form schließen, damit beim zweite Zugriff kein Fehler gemeldet wird?
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#16
  Alt 19. Dez 2002, 11:47
Hi Barzy2x,
bei einem erneuten Aufruf einer Abfrage sollte diese, falls geöffnet zunächst geschlossen werden. Dein Problem liegt aber daran, dass das Property SQL eine Liste ist, und Du bei jedem Add dort eine Zeile hinzufügst. Beim erneuten Aufruf sollte daher die Liste gecleart werden, allerdings nur, wenn das SQL Statement sich ändert, ansonsten kann die Zeile einfach raus. Also:
Code:
procedure TTerminVerwaltung.BitBtn1Click(Sender: TObject);
begin
  with Query1 do begin
    if Active then
      Close;
    DatenbankOeffnen.Edit1.Text = 'Testtabelle.db'
    ParamByName('CurDate').AsDate := date;
    // nur wenn sich SQL ändert
    // SQL.Clear;
    // SQL.Add('SELECT ...')
    Open;
  end
end;
Als Hinweis noch: die Zeile DatenbankOeffnen.Edit1.Text = 'Testtabelle.db' wird unnötigerweise bei jeder Aktualisierung der Abfrage durchlaufen und ist daher hier nicht gut platziert. Für das Requery bietet sich eine eigene Routine an, an die als Parameter den variablen Wert der Abfrage, also den Parameter der Abfrage erhält:

Code:
procedure RequeryQuery1(ADate: TDateTime);
begin
  with Query1 do try
    DisableControls; //friert eventuelle Anzeig in Grid o.ä. ein
    if Active then
      Close;
    ParamByName('CurDate').AsDate := ADate;
    Open;
  finally
    EnableControls;
  end;
end;
Dann sähe Dein ButtonClick so aus:
Code:
procedure TTerminVerwaltung.BitBtn1Click(Sender: TObject);
begin
  DatenbankOeffnen.Edit1.Text = 'Testtabelle.db';
  RequeryQuery1(date);
end;
Vorteil dabei: Du kannst jederzeit per Code die Abfrage aktualisieren und die Routine macht auch wirklich nur, was draufsteht.

gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:31 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