2009-07-14 15 views
2

Voici le code pour remplir une zone de liste dans une application VBA:la requête concernant la chaîne de dsn dans vba

Private Sub Form_Open(Cancel As Integer) 

    ''#Populate list box control. 
    Dim cnn As ADODB.Connection 
    Dim strSQL As String 
    Dim rst As ADODB.Recordset 
    Dim strList As String 

    On Error GoTo ErrHandler 

    ''#Use DSN to Northwind. 
    ''#Modify connection and connection string as needed. 

    Set cnn = New ADODB.Connection 
    cnn.Open "DSN=NorthwindExample" 
    strSQL = "SELECT * FROM Shippers" 
    Set rst = New ADODB.Recordset 
    rst.Open strSQL, cnn 
    strList = rst.GetString(adClipString, , ";", ",") 

    Debug.Print strList 

    Me.lstShippers.RowSource = strList 
    rst.Close 
    cnn.Close 
    Set rst = Nothing 
    Set cnn = Nothing 

    Exit Sub 

ErrHandler: 
    MsgBox Err.No & ": " & Err.Description, vbOKOnly, "Error" 
    Set rst = Nothing 
    Set cnn = Nothing 
End Sub 

Je dois savoir ce que je dois mettre sous forme de chaîne DSN? Où vais-je obtenir l'information?

Qu'est-ce que adClipString ici dans ce code?

Existe-t-il une option pour remplir le contrôle de liste sans utiliser l'objet de connexion DSN puisque je prends les valeurs de la même table d'accès?

+0

@SmartestVEGA: Ceci est la deuxième question sur le même sujet que vous avez demandé dans quelques minutes (l'autre est ici: http://stackoverflow.com/questions/1123664/) Ce n'est peut-être pas le meilleur des idées pour continuez de poster des échantillons de code aléatoires que vous avez déterrés sur Internet, en demandant aux gens de les corriger jusqu'à ce que vous en trouviez un qui fonctionne. Vous devrez investir du temps dans VBA si vous voulez faire quelque chose. – Tomalak

Répondre

2

Voici un lien qui contient les différentes chaînes de connexion pour l'accès: http://www.connectionstrings.com/access

Quelque chose comme cela devrait fonctionner: Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C: \ MyDatabase.mdb; Utilisateur Id = admin; Mot de passe =;

Je ne suis pas sûr de ce qu'est adClipString, il peut s'agir d'une variable non déclarée ou d'une colonne de base de données?

Matt

+0

adClipString: http://msdn.microsoft.com/en-us/library/ms675298%28VS.85%29.aspx – Tomalak

+0

Merci Tomalak, pas très bien à VBA alors merci pour les informations supplémentaires. – Lima

+0

J'ai trouvé une autre solution: lstResults.RowSource = "select * from tblTesting" – SmartestVEGA

1

Here est l'info sur adClipString.

Fondamentalement, la méthode GetString obtient le contenu du jeu d'enregistrements complet dans une variable de chaîne où les colonnes seront séparées par ";" et les lignes seront séparées par "," (selon votre code). En ce qui concerne DSN - voir Démarrer -> Paramètres -> Panneau de configuration -> Outils d'administration -> Sources de données (ODBC). L'un des onglets (je suppose système DSN) est où la source de données ODBC peut être créée et répertoriée.

Questions connexes