Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wenn Table1 durchlaufen ist dann weiter zur table2 usw. (https://www.delphipraxis.net/80257-wenn-table1-durchlaufen-ist-dann-weiter-zur-table2-usw.html)

MkA2k 5. Nov 2006 22:05

Datenbank: MYSQL • Version: 5.0.18 • Zugriff über: ADO

Wenn Table1 durchlaufen ist dann weiter zur table2 usw.
 
Hi,

ich stehe vor einem Problem. Ich möchte gerne von mehrern Tabellen die Zeile einzeln berechen und erst wenn die Tabelle am ende ist soll es zur nächsten gehn, leider liest er mir nur die erste Zeile aus und geht dann gleich zur nächsten Tabelle.

Ich denke ich hab da einen kleinen Logikfehler mit den For Schleifen.

Delphi-Quellcode:
procedure tfrm_totalstd.listing;
var
start,ende,pause : TDateTime;
i,j,row_tab : Integer;
totalmon :string;
a:real;
list:tlist;
begin
totalstd.Clear;
list := Tlist.Create;
//table mit monat,jahr und monatsstd
mainform.query.SQL.Text := 'SELECT * FROM opt';
mainform.sqlconnect.Connected := TRUE;
mainform.query.Open;

While Not mainform.query.Eof do
begin
  with lv.Items.Add do begin
  caption:=(mainform.query.fieldByName('monat').AsString);
  SubItems.Add(mainform.query.fieldByName('jahr').AsString);
  SubItems.Add(mainform.query.FieldByName('m_std').AsString);
 mainform.query.Next;
end;
end;
 for i:=0 to lv.Items.Count-1  do
  begin

  mainform.query.SQL.Text := 'SELECT count(*)as Anzahl FROM '+lv.items[i].caption+'_'+AnsiReplaceStr(lv.Items[i].SubItems[0], '20', '')+'';
  mainform.query.Open;
  row_tab := mainform.query.fieldByName('Anzahl').AsInteger;
  mainform.query.Close;
  for j:=0 to row_tab do
 begin
   mainform.query.SQL.Text := 'SELECT * FROM '+lv.items[i].caption+'_'+AnsiReplaceStr(lv.Items[i].SubItems[0], '20', '')+'';
   mainform.query.Open;
   start := StrToTime(mainform.query.FieldByName('beginn').AsString);
   ende := StrToTime(mainform.Query.FieldByName('ende').AsString);
   pause := StrToTime(mainform.query.fieldbyName('pause').AsString);
   totalmon:=FloatToStr(24*(ende-start-pause));
   listbox1.Items.Add(totalmon);
    mainform.query.next;

     //list.Add(totalmon);
end;

 with totalstd.Items.Add do begin
      Caption :=lv.Items[i].Caption+' - '+lv.Items[i].SubItems[0];
      SubItems.Add(lv.Items[i].SubItems[1]);
    //  subitems.Add(floattostr(a));

end;
end;
end;
Sorry das der Code schlampig formatiert ist, aber ich hab schon x Varianten ausprobiert und dabei ist die formatierung verloren gegangen :cry:

Ich Danke euch!!

MfG

MkA2k

hoika 6. Nov 2006 12:16

Re: Wenn Table1 durchlaufen ist dann weiter zur table2 usw.
 
Ja, sehr schlampig !

in deiner RowTab Schleife fehlt was
Delphi-Quellcode:
with Query do
begin
  Open;
  try
    while not EOF do
    begin
       // bla

      Next;
    end;
  finally
    Close;
  end;
end;
Heiko

MkA2k 6. Nov 2006 13:11

Re: Wenn Table1 durchlaufen ist dann weiter zur table2 usw.
 
Hi Heiko

Zitat:

Ja, sehr schlampig !
ich bin halt ne alte Schlampe :zwinker:

Werde heute Abend deinen Vorschlag ausprobieren, dankeschön

Gruß

MkA2k


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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