![]() |
Daten eines Feldes in einer Query addieren
Wie soll ich mein Problem beschreiben??? Sitz seit mehreren Stunden an diesem bissel Quellcode und komme einfach nicht weiter. Ich versuche es mal:
Delphi-Quellcode:
Es soll dabei folgendes passieren:
for i := 0 to DaysBetween(DatMod.FTaFbeginn.AsDateTime, DatMod.FTaFende.AsDateTime) do
begin Datum := DatMod.FTaFbeginn.AsDateTime; Datum := Datum + i; Kopie2.SQL.Clear; s := 'select * from fest,kunden,zwischen,inventar'; s := s + ' where'; s := s + ' zwischen.ZInr = inventar.Inr AND zwischen.ZFnr = fest.Fnr AND fest.fknr = kunden.knr'; s := s + ' AND fest.fbeginn <= "'+DateToStr(Datum)+'" AND fest.fende >= "'+DateToStr(Datum)+'"'; s := s + ' AND zwischen.ZInr = '+DatMod.IQuInr.AsString; Kopie2.SQL.Add(s); Kopie2.Active := True; Kopie2.First; anzahldatum := 0; while not(Kopie2.Eof) do begin anzahldatum := anzahldatum + Kopie2.FieldByName('ZIanzahl').AsInteger; Kopie2.Next; end; end; Es werden 2 Daten eingegeben (z.B. 20.07.2004 & 21.07.2004). Nun werden die Tage in der ersten Schleife (for-Schleife) einzeln durchgangen und dabei soll in der Query (diese gibt Tage an, wo ein Fest stattfindet und wo auch das Inventar bereits drinne steht, was dafür benötigt wird) nun die Anzahl der schon verwendeten Inventare (was gerade angegeben wurde; DatMod.IQUInr) addiert werden. Also z.B. Erster Durchgang (for-Schleife): Datum = 20.07.2004; Hier sind bereits Feste eingetragen, die das Inventar "Buffettisch Nr. 201" benutzen. Und zwar das Fest in Berlin, Schützenfest, wofür 30 Tische benötigt werden und München, Schützenfest, wofür 20 Tische benötigt werden. Sprich die Ausgabe soll 50 für diesen Tag heißen. Der nächste Tag (wieterer Durchlauf der for-Schleife soll ebenso gestaltet werden. Vielleicht hat das ja jemand verstanden. ThX im vorraus. |
Re: Daten eines Feldes in einer Query addieren
Hab mich belesen (wofür gibt's die Hilfe??? :wink: ) und kam auf folgendes Ergebnis, was aber immernoch eine Fehlermeldung ausgibt.
Code:
Fehler lautet "Invalid field name. INr".
for i := 0 to DaysBetween(DatMod.FTaFbeginn.AsDateTime, DatMod.FTaFende.AsDateTime) do
begin Datum := DatMod.FTaFbeginn.AsDateTime + i; anzahldatum := 0; Kopie2.SQL.Clear; s := 'select Sum(ZIanzahl) AS Summe'; s := s + ' from zwischen; //fest,kunden,zwischen,inventar'; s := s + ' where'; s := s + ' zwischen.ZInr = inventar.Inr AND zwischen.ZFnr = fest.Fnr AND fest.fknr = kunden.knr'; s := s + ' AND fest.fbeginn <= "'+DateToStr(Datum)+'" AND fest.fende >= "'+DateToStr(Datum)+'"'; s := s + ' AND zwischen.ZInr = '+DatMod.IQuInr.AsString;} Kopie2.SQL.Add(s); Showmessage(s); Kopie2.Active:=True; anzahldatum:=Kopie2.FieldByName('Summe').AsInteger; ShowMessage('Datum: '+datetostr(Datum)+'; Anzahldatum: '+inttostr(anzahldatum)); end; Wieso das? |
Re: Daten eines Feldes in einer Query addieren
Dummheit bestraft das Leben
Code:
Logisch ich muss ja auch so machen:
s := s + ' from zwischen;
//fest,kunden,zwischen,inventar';
Code:
:wall: ... :wall:
s := s + ' from fest,kunden,zwischen,inventar';
Naja, hauptsache ich habs endlich :cheers: |
Re: Daten eines Feldes in einer Query addieren
Du willst die Summe aller gefundenen ZIanzahl? -> Warum fragst du deine DB nicht genau danach?
Delphi-Quellcode:
Ich bezweifel, dass du die Tabelle Inventar wirklich brauchst. ;)
with SomeADOQuery do
begin SQL.Text := 'SELECT sum(ZIanzahl) SumOfZIanzahl' + #10 + 'FROM fest' + #10 + ' ,kunden' + #10 + ' ,zwischen' + #10 + ' ,inventar' + #10 + 'WHERE zwischen.ZInr = inventar.Inr And' + #10 + ' zwischen.ZFnr = fest.Fnr And' + #10 + ' fest.fKnr = kunden.Knr And' + #10 + ' (:i_Datum Between fest.fBeginn And fest.fEnde) And' + #10 + ' zwischen.ZInr = :i_IQuInr'; // Parse Statement um Variablen zu erkennen Prepared := True; // Parameterzuweisung with Parameters do begin ParamByName('i_Datum').DataType := ftDateTime; ParamByName('i_IQuInr').DataType := ftString; ParamByName('i_Datum').Value := Datum; ParamByName('i_IQuInr').Value := DatMod.IQuInr.AsString; end; // Ausführen Open(); if not Eof then AnzahlDatum := Fields[0].AsInteger else AnzahlDatum := // Was auch immer rein soll, wenn du nix gefunden hast end; Zum Thema SQL & Stringbasteleien dürftest du in dem Suchlink unten genügend Predigten von mir finden. [dp:5f37332a04=schwachfug or käse or boom or tag or monat and datum and parameter]Klick[/dp:5f37332a04] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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-2025 by Thomas Breitkreuz