AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Umstellung auf SQL-Filterung

Umstellung auf SQL-Filterung

Ein Thema von Crowbar · begonnen am 21. Jul 2014 · letzter Beitrag vom 21. Jul 2014
 
Crowbar

Registriert seit: 17. Jun 2002
43 Beiträge
 
#1

Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 15:06
Datenbank: dbf • Version: x • Zugriff über: TTable, TQuery, TDatasource
Hallo,

ich bin gerade dabei mein kleines Rechnungsprogramm von TTable nach TQuery (inkl. SQL-Befehle) umzuschreiben.

In meinem Rechnungsprogramm sollen die Rechnungen angezeigt werden, dessen Buchnungsdatum (Tabellenfeld "RESTELLUNG") gegenüber dem aktuellen Datum größer-gleich der Mahntage (z.B. 14 Tage) sind.
Im Prinzip sollen alle erstellten Rechnungen, die vor 14 Tagen erstellt wurden und kein Rechnungseingangsdatum besitzen, angezeigt werden (= für Mahnungen).

Diesen "OnFilterRecord"-Event (TTable) habe ich bisher wie folgt programmiert und läuft auch so wie gewollt:

Delphi-Quellcode:
...
MahnTage:=14;
...
{ Differenz der Tage ermitteln }
Function TMainForm.DaysBetween(const d1,d2: TDateTime) : Integer;
begin
  Result:=Trunc(d1)-Trunc(d2);
end;
...

Procedure TMainForm.DBBuchungTableFilterRecord(DataSet: TDataSet; var Accept: Boolean);
Var
 Tage : Integer;

begin
  if (FilterFeld = 'MAHNUNG') then
   begin
     if ((DBBuchungTable.FieldByName('REEINGANG').AsString = '') and (DBBuchungTable.FieldByName('KATEGORIE').AsWideString = 'Einnahmen') and not (DBBuchungTable.FieldByName('RESTELLUNG').AsString = '') then
      begin
        Tage:=DaysBetween(Now,StrToDate(DBBuchungSQLQuery.FieldByName('RESTELLUNG').AsString));
        Accept:=(Tage >= MahnTage);
       end;
   end;
end;
...
Nun möchte ich diese Abfrage/Filterung per SQL lösen.

Filterbedingungen:
Nur die Rechnungen der KATEGORIE "Einnahmen" anzeigen, dessen Datum im Feld "RESTELLUNG" größer-gleich der Mahntage (z.B. 14 Tage) sind und das Datum für Rechnungseingang (Feld "REEINGANG") leer ist.
Zusätzlich ... das Feld "RESTELLUNG" darf auch nicht leer sein.

Zusammengefaßt:

- im Feld "KATEGORIE" => muss "Einnahmen" stehen
und
- das Feld "RESTELLUNG" darf nicht leer sein
und
- das Feld "REEINGANG" muss leer sein
und
- das Datum im Feld "RESTELLUNG" muss größer-gleich 14 Tage vor dem aktuellen Datum sein

Irgendwie stehe ich jetzt hier, durch die vielen "Bedingungsabfragen", auf dem Schlauch.

SQLText:='SELECT * FROM Buchung WHERE KATEGORIE ="Einnahmen" AND REEINGANG = '+QuotedStr('')+' AND RESTELLUNG >=... ???

Geändert von Crowbar (21. Jul 2014 um 15:27 Uhr)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:39 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 by Thomas Breitkreuz