LonghornUser hat folgendes geschrieben: |
Wenn es dir um einen Monat geht:
Quelltext 1:
| Select Sum(Gewinn) from Buchungen B where B.RechDatumVon >= '01.05.2004' and B.RechDatumBis <= '31.05.2004' |
Table1
Datasource1 (ist mit der DB-Datei verknüpft)
DBGrid (projeziert die DB-Datei)
Wie müsste ich es dann machen, wenn die jahreszahl nicht "2004" heißt sondern so groß ist, wie die letzte (höchste) Jahreszahl des Datensatzes ist ?
Also dass, wenn der letzte Kauf im Mai 2005 war, soll sich das Programm von selbst darauf einstellen können.
Weißt du / Wisst ihr, wie man das anstelln könnte ? |
Hab nie mit direkten DB Komponenten zu tun gehabt, also nie nen DB Grid verwendet.
Da ich nur IBO verwende weiss ich nicht ob das was ich jetzt schreibe auch mit den TDataSet Klassen klappt:
Wenn Du eine QueryKomponente auf deine Form "wirfst" dann kannste ihr meinen obrigen Quelltext zuweisen und dann die Verbindung zwischen Query und Dataset herstellen. Das DB Grid sollte dann die Informationen aus dem Query anzeigen.
Zu deiner 2. Frage:
Quelltext
1:
| Select MAX(AbrechDat) from Buchungen |
als erstes mit einem query abfeuern, dann das Ergebnis merken
Quelltext
1: 2:
| if not qryAbfrage.EOF then dMaxAbrechDat:= qryAbfrage.FieldByName('ABRECHDAT').asDate |
Die EOF abfrage solltest du machen, weil wenn kein Datensatz in deiner Tabelle vorhanden ist, dann wäre es unklug den Umsatz des Monates zu bestimmen.
dMaxAbrechdat ist eine TDate Variable, mit dieser kannst du jetzt den Monatsanfang und das Monatsende bestimmen. Guck dir mal in der Hilfe die Datumsroutinen an, bin mir nicht sicher ob es eine BeginOfMonth und EndOfMonth Routine gibt, aber sollte es, oder ähnlich heissende.
Diese beiden Variablen kannst du dann wieder für dein Query verwenden, dadurch bekommst du dann halt jeweils für de Monat die Ergebnisse. Ob man das direkt durch SQL lösen kann ist ne andere Frage, ich denke mal mit der BDE oder sonstigen "einfachen" DB Systemen nicht so leicht. Wenn Du eigene UDF's anlegen kannst, könntest du darin die Berechnugn machen, aber ich würde es dir eher im Source raten zu machen., Falls du dann mal das DB System wechseln solltest, kannste dich darauf verlassen das diese Abfrage auch dann noch ordentlich klappen sollte.
Gruß Martin