2008-11-29 9 views

Répondre

1

Bien que je n'y suis pas allé spécifiquement avec SQL Compact, la connexion au serveur doit être standard:

  1. Vérifiez que correctement refernced le fichier ADODB (de msado21.tlb) dans vos outils
  2. 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 
2

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.