Pb avec dbopensnapshot

fredpop37 Messages postés 2 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007 - 6 sept. 2007 à 10:48
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 - 18 sept. 2007 à 10:05
Bonjour,

Débutant, j'ai un sérieux problème avec le code très court qui suit :

Option Explicit
Public db As Database
Public rs As Recordset
Public sql As String

Private Sub Form_Load()
    Set db = OpenDatabase(App.Path & "\requisition.mdb")
    sql = "select*from Agents"
    Set rs = db.OpenRecordset(sql, dbOpenSnapshot) <-- sur cette ligne erreur "type incompatible"
    Lst_agents.AddItem rs.Fields("nom")
End Sub

C'est un code succint destiné a tester l'accès a un  base de donnée access.
Je ne comprend pas d'où vient l'erreur, quelles sont les causes possibles.

Merci pour votre aide...

4 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
17 sept. 2007 à 14:26
Salut,
Je ne sais pas si ça vient de là mais mets des espaces dans ta requête.

sql = "select * from Agents"

Et pour ajouter ensuite la ligne que tu as écrites ne suffira pas :
with rs
If .RecordCount <> 0 Then
        .MoveFirst
         Do While Not .EOF   'puis parcourt les enregistrements jusqu'au dernier
         'Ajout des différents choix de la listbox
         Lst_agents.AddItem .Fields("nom")
        .MoveNext
    Loop
end with
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
17 sept. 2007 à 14:30
PS :

Ne pas oublier de fermer le recordset à la fin de la boucle
.Close 'fermeture du recordset
0
fredpop37 Messages postés 2 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007
17 sept. 2007 à 17:32
Merci à toi,
Bizarre, mon code fonctionne si je ne déclare pas les variables.

De plus, en créant un nouveau projet, même en les déclarant cela fonctionne...

alors ????

j'ai continué ss déclaration...

si vous avez des avis...
fred
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
18 sept. 2007 à 10:05
Re,


Il vaut mieux toujours déclarer les variables..
Et comme ceci??

Public Sql As String
Public base As Database
Public MonEspace As Workspace
Public rs As Recordset

nomBase = App.Path + "\base_mas.mdb"             'initialisation et ouverture de la base
Set MonEspace = DBEngine.Workspaces(0)
Set base = MonEspace.OpenDatabase(nomBase)
sql = "select*from Agents"
Set rs = MonEspace.OpenRecordset(sql, dbOpenSnapshot)
0
Rejoignez-nous