Hallo Leute,
ich zerbreche mir schon seit 2 Tagen den Kopf über folgendem Problem:
Ich habe eine
Access-
DB und eine
MSSQL-
DB. In beiden
DB´s gibt es Tabellen mit ähnlichen Inhalten.
In der
Access-
DB stehen mehr Datensätze als in der
MSSQL-
DB.
Ich möchte mir nun alle Datensätze der
Access-
DB anzeigen lassen, die noch nicht in der
MSSQL-
DB enthalten sind.
Wären das 2 Tabellen einer
DB würde ich also folgendes
SQL-Statement nehmen:
SELECT * FROM Tabelle1 WHERE Index1 NOT IN (SELECT Index2 FROM Tabelle2)
Wie muss ich das nun mit 2 unterschiedlichen Datenbanken machen?
Momentan sieht mein Ansatz folgendermaßen aus.
Ich habe folgende Komponenten:
ADOConnectionAccess
ADODataSetAccess
ADODataSourceAccess
ADOConnectionMSSQL
ADODataSetMSSQL
ADODataSourceMSSQL
DBGrid
Die DataSet-Properties der DataSources stehen auf den jeweiligen ADODataSets.
Die Connection-Properties der DataSets stehen auf den jeweiligen ADOConnections.
Das ADODataSetAccess hat einen Parameter namens NameMSSQL.
Der CommandText des ADODataSetMSSQL lautet
SELECT NameMSSQL FROM TabelleMSSQL
Der CommandText des ADODataSetAccess lautet
SELECT NameAccess FROM TabelleAccess WHERE NameAccess NOT IN (:NameMSSQL)
Die DBGrid hat als DataSource die ADODataSourceAccess.
Ich dachte, ich kann das Problem über das Parameters-Property des DataSets lösen. Dazu müsste ich einen Parameter schaffen, der die ganze Ergebnismenge des ADODataSetMSSQL enthält (also das Feld NameMSSQL).
Mittlerweile weiß ich da aber nicht weiter. Es gibt für die Parameter zwar den DataType ftDataSet, aber den kann ich nicht ohne Fehlermeldung auswählen.
Ich habe jetzt auch schon überlegt, ob es vielleicht über das Filter-Property gelöst werden kann. Allerdings müsste ich auch da irgendwie auf die Ergebnismenge des ADODataSetMSSQL zugreifen können.
Bitte, bitte, bitte helft mir. Ich weiß einfach nicht mehr weiter.