Bonjour,
je voudrais automatiser l'attache des tbales d'une base SQL serveur dans Access 2003.
J'ai trouver la procédure suivante sur microsoft :
Pour créer une requête SQL directe pour lister et pour attacher toutes les tables sur un SQL Server, procédez comme suit :
1. Créez une nouvelle requête qui n'est pas fondée sur une table.
2. Dans le menu Requête, choisissez Spécifique SQL et choisissez Transfert.
3. Dans la fenêtre Requête SQL directe, tapez la ligne suivante :
SELECT name FROM sysobjects Where type = 'U';
REMARQUE : si le SQL Server que vous utiliserez a été installé avec le respect de casse, vous pouvez doit taper "Nom" et "u" en majuscules.
4. Dans le menu Affichage, choisissez Propriétés. Vous entrez un complet ODBC connecte la chaîne dans la propriété ODBCConnectStr ou choisit le bouton Générer pour sélectionner une source de données ODBC. Ci-dessous trouve qu'un exemple d'un ODBC valide connecte la chaîne :
ODBCConnectStr : ODBC DSN = opus; UID = jean; PWD = steeler DATABASE = pubs
5. Exécutez la requête pour vous assurer qu'elle renvoie une colonne appelée Name qui affiche la liste des tables sur le SQL Server.
6. Enregistrez la requête comme SQL_Tables et puis fermez-le.
7. Créez un nouveau module et puis entrez la ligne suivante dans la section Déclarations :
8. Entrez le code suivant du module.
REMARQUE : dans le code exemple suivant, un trait de soulignement (_) à la fin de la ligne est utilisé comme du caractère de continuité de ligne. Supprimez ce trait de soulignement en fin de ligne lors de la reprogrammation dans Access Basic.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Function attach_all ()
Dim DB As Database
Dim RS As Recordset
Dim QD As QueryDef
Set DB = DBEngine.Workspaces(0).Databases(0)
' Set the QueryDef variable to the pass-through query.
Set QD = DB.OpenQueryDef("sql_tables")
Set RS = DB.OpenRecordset(QD.name, DB_OPEN_SNAPSHOT)
Do Until RS.EOF
DoCmd TransferDatabase A_ATTACH, "<Sql database>", _
QD.connect, A_TABLE, RS!Name, RS!Name
RS.MoveNext
Loop
RS.Close
QD.Close
End Function |
9. Pour tester la fonction, choisissez Affichage à partir de la fenêtre Immédiat, tapez la ligne suivante dans la fenêtre Immédiat et puis appuyez sur ENTRÉE :
? attach_all()
Toutes les tables sur le SQL Server seront attachées à la base de données courante. Le volume de fois de laquelle nécessite ce processus dépend du nombre de tables sur le SQL Server.
Le problème est quand je lance la fonction j'obtiens une erreur (voir copie ecran).
Merci de votre aide.
Partager