Hm, weiß nicht so recht, ob ich das richtig verstanden habe.
Von einem Server bekommst du sehr viele Daten per
SQL. Nun muss du aus einer zweiten Datenbank einen anderen Wert holen und damit ein Feld der ersten Daten ändern.
Das Ergebnis muss nicht gespeichert werden, sondern nur solange im Arbeitsspeicher für die Weitergabe an die Clients zur Verfügung stehen, bis eine bestimmte Zeitspanne abgelaufen ist oder über einen längeren Zeitraum keine Clientanfrage beim Server ankommt.
Grob also sowas:
Delphi-Quellcode:
// In einem Timerereignis oder wie auch immer die "Zeitschleife" gesteuert wird.
begin
// Cancel und Close funktionieren auch fehlerfrei, wenn die Abfrage weder im Editiermodus noch geöffnet ist.
MsQuery.Cancel; // Letzte Änderung verwerfen.
MsQuery.Close; // Letzte Abfrage schließen.
MsQuery.SQL.Add('große Abfrage von oben'); // Neue Abfragen erstellen.
CDMQuery.SQL.Add('kleine Abfrage von oben');
MsQuery.Open; // Erste Abfrage öffnen
CDMQuery.ParamByName('Device').AsString := MsQuery.FieldByName('device_id').AsString; // und in zweiter Abfrage den Parameter setzen.
CDMQuery.Open; // Die zweite Abfrage öffnen,
MsQuery.Edit; // die erste Abfrage editieren und den Wert aus der zweiten Abfrage übernehmen.
MsQuery.FieldByName('Operator').AsString := CDMQuery.FieldByName('userID').AsString;
// Die Abfrage bleibt im Editiermodus.
// Bei Anforderungen durch einen Client müssten dann die bereits editierten, aber nicht gespeicherten Daten,
// per SaveToStream ausgeliefert werden.
end;