Vous pouvez le faire en utilisant une syntaxe spéciale pour le SQL que vous utilisez pour sélectionner les lignes de données que vous souhaitez copier, comme suit:
J'ai une première base de données d:\aaad7\ado\test.mdb
contenant une table d'accès ATable
contenant une colonne de caractères, ANAME
. J'ai aussi une deuxième base de données vide d:\aaad7\ado\dest.mdb
.
Le code suivant copie la table ATable
dans la deuxième base de données.
AdoQueryCopy.SQL.Text := 'SELECT * INTO ATable IN "D:\aaad7\ado\dest.mdb" FROM ATable';
AdoQueryCopy.ExecSql;
où AdoQueryCopy
est un TADOQuery qui a une chaîne de connexion qui pointe vers d:\aaad7\ado\test.mdb
.
Important Si vous souhaitez ouvrir la copie de ATable
à d:\aaad7\ado\dest.mdb
, vous devez fermer la connexion qui AdoQueryCopy
est d'utiliser à l'avance, sinon vous risquez d'obtenir une erreur se plaignant que un objet ADO ne peut pas renvoyer plusieurs ensembles de résultats. Je ne suis pas sûr, mais je pense que cela peut être parce que AdoQueryCopy.ExecSQL
provoquer un ensemble de données ADO temporaire à créer avec les lignes insérées.
Les lignes copiées à ATable
dans la deuxième base de données peuvent être sélectionnées en ajoutant une clause WHERE
.
Pouvez-vous poste qu'avez-vous essayé? et aussi l'exemple de la structure de la table de données – Sami
La base de données de destination contient-elle aussi un accès à ms (je suppose que c'est le cas)? la base de données/table de destination existe-t-elle ou non? leurs structures sont-elles identiques? la source doit-elle provenir d'un jeu de données/requête ADO en premier? S'il vous plaît fournir plus de détails. – kobik