Einzelnen Beitrag anzeigen

Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#1

Verknüpfung über IN-Operator mit ADO-Komponenten

  Alt 26. Nov 2009, 08:33
Datenbank: MSSQL und Access • Zugriff über: ADO-Komponenten
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.
Nico Bäger
  Mit Zitat antworten Zitat