Hallo,
ich habe eine Tabelle, die einmal pro Sekunde "geupdatet" werden soll (in einer TIdThreadComponent);
Ich versuche das derzeit so, was aber nicht richtig funktioniert (Erhängt sich meistens sehr schnell):
Code:
procedure TKommunikation.trdSqlDatenRun(Sender: TIdThreadComponent);
var
Loop: Integer;
begin
for Loop := 1 to MaxmaschinenIndex do begin
if (MaschinenListe[Loop].FrameType = 'TYP1') OR (MaschinenListe[Loop].FrameType = 'TYP2') then begin
LogMaschinendatenToTempSql(Loop);
end;
end;
Sleep(1000); //SqlDatenSleepTime);
end;
procedure TKommunikation.LogMaschinendatenToTempSql(Index: Integer);
begin
Daten.tblMaschinendaten_Temp.Open;
Daten.tblMaschinendaten_Temp.Filtered := False;
Daten.tblMaschinendaten_Temp.Filter := 'MaschinenIndex = ' + QuotedStr(Index.ToString);
Daten.tblMaschinendaten_Temp.Filtered := True;
DbgInfo('Index: ' + Index.ToString + ' - Recordcount: ' + Daten.tblMaschinendaten_Temp.RecordCount.ToString);
if Daten.tblMaschinendaten_Temp.RecordCount = 0 then begin
Daten.tblMaschinendaten_Temp.Insert;
end else begin
Daten.tblMaschinendaten_Temp.Edit;
end;
Daten.tblMaschinendaten_TempMaschinenIndex.AsInteger := Index;
Daten.tblMaschinendaten_TempTemperatur.AsInteger := MaschinenDaten[Index].ActTemperature;
Daten.tblMaschinendaten_TempPartial_Stueckzaehler.AsInteger := MaschinenDaten[Index].Partial_Pcs;
Daten.tblMaschinendaten_TempTotal_Stueckzaehler.AsInteger := MaschinenDaten[Index].Total_Pcs;
Daten.tblMaschinendaten_Temp.Post;
Daten.tblMaschinendaten_Temp.Close;
end;