AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten eines Feldes in einer Query addieren
Thema durchsuchen
Ansicht
Themen-Optionen

Daten eines Feldes in einer Query addieren

Ein Thema von TypusMensch · begonnen am 20. Jul 2004 · letzter Beitrag vom 20. Jul 2004
Antwort Antwort
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#1

Daten eines Feldes in einer Query addieren

  Alt 20. Jul 2004, 16:14
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:
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 soll dabei folgendes passieren:
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.
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Daten eines Feldes in einer Query addieren

  Alt 20. Jul 2004, 16:41
Hab mich belesen (wofür gibt's die Hilfe??? ) und kam auf folgendes Ergebnis, was aber immernoch eine Fehlermeldung ausgibt.

Code:
  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;
Fehler lautet "Invalid field name. INr".
Wieso das?
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Daten eines Feldes in einer Query addieren

  Alt 20. Jul 2004, 17:16
Dummheit bestraft das Leben

Code:
s := s + ' from zwischen;
//fest,kunden,zwischen,inventar';
Logisch ich muss ja auch so machen:

Code:
s := s + ' from fest,kunden,zwischen,inventar';
...

Naja, hauptsache ich habs endlich
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Daten eines Feldes in einer Query addieren

  Alt 20. Jul 2004, 18:08
Du willst die Summe aller gefundenen ZIanzahl? -> Warum fragst du deine DB nicht genau danach?
Delphi-Quellcode:
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;
Ich bezweifel, dass du die Tabelle Inventar wirklich brauchst.

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]
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:47 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