Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim oConn As ADODB.Connection Dim oRS As ADODB.Recordset Dim sSQL As String Set oConn = New ADODB.Connection With oConn ' La chaine de connexion .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Persist Security Info=False;" & _ "Data Source=monFichier.MDB" .Open Do While .State = adStateConnecting DoEvents Loop If .State <> adStateOpen Then MsgBox "Pas de connexion" Exit Sub End If End With Set oRS = New ADODB.Recordset With oRS ' Ta requète SQL sSQL = "Select * From maTable" ' L'exécution .CursorLocation = adUseClient .Open sSQL, oConn, adOpenStatic, adLockReadOnly ' La récupération des données If .RecordCount > 0 Then .MoveFirst Do While Not .EOF DoEvents Debug.Print .Fields(0).Value .MoveNext Loop End If End With oRS.Close oConn.CloseAvec la chaine de connexion qui va bien avec la DB que tu auras choisie.
Debug.Print .Fields(0).Valuetu peux aussi utiliser cette syntaxe :
Debug.Print .Fields("LeNomDuChamp").Value
myRecordSet.ActiveConnection = myADODB myRecordSet.CursorLocation = adUseClient myRecordSet.Open , , adOpenStatic, adLockBatchOptimistic, ...
Global MaCon As ADODB.Connection 'En global car UN SEUL fichier MDB traité en même temps _ , mais changement de DB possible, donc pas de constante '!!! Exemple pris=BIBLIO.MDB très connu du Visual Studio Global GlobFichier_MDB As String ' Public Function Con_Ouvre(ByVal NomFichierEntierMDB As String) As Long '! A appeler au démarrage du programe '! Function As Long (au lieu de Sub) pour un retour futur d'erreur 'If MaCon.State = adStateOpen Then MaCon.Close 'Error 91 si non Open avant '# Avant d'ouvrir une nouvelle connexion, on réinitialise: '# (En s'assurant que l'ancienne connexion est déjà fermée!) Set MaCon = Nothing Set MaCon = New ADODB.Connection '# Nouvelle chaine de connexion: With MaCon .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Persist Security Info=False;" & _ "Data Source=" & NomFichierEntierMDB '! Pour le moment BIBLIO.MDB que l'on trouve partout:) .Open Do While .State = adStateConnecting DoEvents Loop If .State <> adStateOpen Then MsgBox "Pas de connexion" Exit Function End If End With End Function Public Sub Con_Ferme() '! A ajouter dans Main.frm\Unload, ou avant la fin du programme MaCon.Close '! Error 91 si non Open Set MaCon = Nothing End Sub Public Function LV_Affiche_Table(myLV As ListView, myTable As String) As Long '! Function As Long (au lieu de Sub) pour un retour futur d'erreur '[Problème1] : myTable=Authors uniquement car je ne sais pas comment récupérer les différents _ champs d'une table sous ADODB Dim myRs As ADODB.Recordset Dim sSQL As String 'Je l'aurais bien appelé mySQL, mais ça peut prêter confusion lol '# Requête: '---------- Set myRs = New ADODB.Recordset 'myRs.Open "select * from " & myTable, MaCon, adOpenDynamic, adLockOptimistic '! myRs.Open Source, ActiveConnection, CursorType, LockType, Options With myRs '# Requète SQL sSQL = "Select * From " & myTable '# L'exécution .CursorLocation = adUseClient .Open sSQL, MaCon, adOpenStatic, adLockReadOnly End With ' If myRs.BOF And myRs.EOF Then If myRs.RecordCount < 1 Then MsgBox "Aucun enregistrement" GoTo LV_Affiche_Table_Fin End If '# Par précaution après Open: 'myRs.MoveLast myRs.MoveFirst '# Récupération des données dans myLV: '------------------------------------- Dim i As Integer, x As Integer Dim itmX As ListItem '# Initilisation EN BRUT des colonnes dans myLV: 'Table : Authors ' champ : Au_ID ' champ : Author ' champ : Year Born With myLV .ColumnHeaders.Clear .ColumnHeaders.Add , , "Au_ID" .ColumnHeaders.Add , , "Author" .ColumnHeaders.Add , , "Year Born" End With '# Affichage des différents itmX Do Until myRs.EOF i = i + 1 Set itmX = myLV.ListItems.Add(i, , myRs.Fields(0)) For x = 1 To 1 '[Problème2] J'aurai dû écrire For X=1 To 2 (Year Born), sauf que le champ 'Year Born' est vide _ , et provoque Erreur d'exécution '94': Utilisation non autorisé de Null itmX.SubItems(x) = myRs.Fields(x) Next x myRs.MoveNext Loop LV_Affiche_Table_Fin: Set myRs = Nothing End Function