Est-il possible d'écrire une connexion et d'ouvrir une base de données SQL Compact 3.5 à partir de MS Access 2003? Je veux être en mesure d'utiliser MS Access 2003 pour manipuler des données dans une base de données SQL Compact 3.5. Si c'est possible, alors quelles déclarations seraient utilisées pour ouvrir la base de données?Connexion de la base de données SQL Server Compact 3.5 à MS Access 2003 à l'aide d'ADO?
Répondre
Bien que je n'y suis pas allé spécifiquement avec SQL Compact, la connexion au serveur doit être standard:
- Vérifiez que correctement refernced le fichier ADODB (de msado21.tlb) dans vos outils
Ecrivez votre chaîne de connexion quelque part comme celui-ci:
MyConnectionString = "Provider = SQLOLEDB.1; Integrated Security = SSPI; Persist Security info = False; initial Catalog = votre_nom_base_de_données; Data Source = YourSQLServerInstanceName"
Cette chaîne est écrite pour un contexte de 'sécurité intégrée'. Dans le cas où vous voulez le changer pour un contexte de sécurité SQL, veuillez vérifier here pour mettre à jour la chaîne. Idéalement, cette chaîne devrait être déclarée comme une variable publique dans votre code.
Une fois cela fait, vous pouvez ouvrir un jeu d'enregistrements ADODB et commencer à manipuler:
public sub connectionTest
Dim activeConnection as ADODB.connection, _
activeRecordset as ADODB.recordset
Set activeConnection = New ADODB.connection
activeConnection.connectionString = myCOnnectionString
activeConnection.open
set activeRecordset = New ADODB.recordset
'this will open a read-only recordset'
activeRecordset.open _
"SELECT * FROM myTableName", _
activeConnection, _
adOpenStatic, _
adLockReadOnly
if activeRecordset.EOF and activeRecordset.BOF then
debug.print "No records in this table"
else
activeRecordset.moveFirst
do while not activeRecordset.EOF
debug.print activerecordset.fields("myFieldName").value
activeRecordset.moveNext
loop
endif
activeRecordset.close
set activeRecordset = nothing
activeConnection.close
set activeConnection = nothing
end sub
Ceci est juste une idée et je ne peux pas confirmer que cela fonctionnera, mais étant donné que SQL Compact n'a pas de pilote ODBC et vous ne pouvez pas avoir de tables liées. Vous pouvez peut-être utiliser une chaîne de connexion OLEDB pour SQL Compact en tant que chaîne Source Connect d'un QueryDef enregistré dans Access. Si vous pouvez obtenir que cela fonctionne, vous pouvez créer un QueryDef enregistré pour chaque table, puis les utiliser comme si les requêtes étaient des tables liées.
Je ne peux pas le tester sur ma machine car le seul fournisseur OLEDB que j'ai installé est Jet, et Access ne semble pas aimer ça.
Mais cela vaut la peine d'essayer. Peut-être que cela ne marchera pas, car je ne trouve nulle part que quelqu'un l'ait fait dans Access. Mais je ne vois pas vraiment pourquoi ça ne devrait pas marcher.
Encore une fois, je pourrais simplement me tromper, cependant.