Zitat von
jensenwb:
Ich habe in der einen Datenbank ca 70.000 Datensätze und in der dazugehörenden anderen Datenbank ca 117.000 Datensätze. Wenn ich in der kleinen Datenbank einen Datensatz anzeige dann brauche ich in der Dazugehörenden großen Datenbank die entsprechenden Datenätze um die entsprechenden Touren zu ermitteln.
1. Wie holst Du dir den einen Datensatz aus der ersten Tabelle ?
2. Und wie aus der 2-ten. Du wirst nie und nimmer die 117000 Datensätze anzeigen müssen, und auch nicht zu deinem Programm zu transferieren... Durch Setzen deinen MasterDatasource ist es einzig und allein Delphi, der sich ums Filtern kümmert, und nicht
Access. Es werden also alle 117000 transferiert, und Delphi zeigt nur die Datensätze an, die matchen...
Deshalb besser:
1. Select * from Tabelle1 where Name='Dagobert Duck' ;
Das liefert dir genau einen Record, deinen Masterrecord. Mit einem entsrpechendem Index auf der Spalte Name, dauert das selbst bei
Access keine 1/10 Sekunde.
Dann im OnAfterScroll Event würd ich die 2.
Query aufbauen, die so aussehen kann:
Select * from Tabelle2 where AdrId = :Id
Delphi-Quellcode:
begin
with Tabelle2 do begin
close ;
Parambyname ('id').AsInteger := Tabelle1.FieldByName('deinePrimaryKeySpalte').AsInteger ;
open ;
end ;
end ;
Das hat den ganz entscheidenden Vorteil, dass
Access nur die Datensätze liefert, die auch wirklich relevant sind.