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
Ich Danke euch!!
MfG
MkA2k