Moin moin,
folgende Ausgangssituation:
Es gibt zwei Datenbanken. In der einen liegen die zentralen Kundendaten und in der anderen werden für jede Filiale lokal die Statisikdaten festgehalten.
Wenn ich nun für die Statistik die Kunden nach Kundennummer eingrenzen möche, muss ich das so oder so ähnlich machen:
Delphi-Quellcode:
QueryZentral.sql.text:='select id from kunden where kundennummer between ''001'' and ''101''';
QueryZentral.open;
ids:='';
while not QueryZentral.eof do begin
ids:=ids+QueryZentral.fieldbyname('id').asstring+',';
QueryZentral.next;
end;
delete(ids,length(ids),1);
QueryLokal.sql.text:='select sum(umsatz) from stat where kunden_id in ('+ids+')';
QueryLokal.open;
Ja, stimmt, das System ist nicht grade optimal aufgebaut, aber so ist leider mein Ausgangspunkt
Jetzt kann man sich denken wo das Problem liegt... das
SQL-Statement kann bei vielen Kunden sehr lang werden.
Heterogene Datenbankverbindungen werden von Firebird/Interbase ja leider nicht unterstützt.
Kann man das Problem anders angehen?
Habs auch mal mit Parametern versucht, à la:
Delphi-Quellcode:
QueryLokal.sql.text:='select sum(umsatz) from stat where kunden_id in (:IDS)';
QueryLokal.parambyname('IDS').asstring:=ids;
QueryLokal.open;
was natürlich nicht geht.
Bin dankbar über Anregungen.