Accéder aux enregistrements d'un table ? [ VBA ] - Programmation
Marsh Posté le 27-01-2002 à 22:30:00
Apparement c'est parce qu'il n'y a pas de référence sur la librairie Microsoft DAO d'après ce post : 
 
http://forum.hardware.fr/forum2.ph [...] ic=&trash= 
 
Mais comment fait-on cette référence ? 
Marsh Posté le 28-01-2002 à 08:53:17
J'ai réussit :  
 
Dans le module (sous Microsoft Visual Basic) il faut faire Menu Outils -> Références sur "Microsoft DAO 3.6 Object Library" 
 
Ensuite il reconnaît le type Database. 
 
Par contre, j'ai un autre pb toujours avec le même code : 
 
Dim Db as database  
Dim Rs as recordset  
Set Db = Application.CurrentDb  
Set Rs = Db.OpenRecordset("ARTICLE",dbOpenTable)  
 
J'ai l'erreur d'execution 13 : Incompatibilité de type. 
 
Le truc c'est que j'ai recopié ce même code (copier/coller) sous un autre fichier .mdb que j'ai trouvé sur un Cd de code sources d'un Livre sur Access. J'y ai rajouté la table ARTICLE (la même) et là ce code marche? 
Je ne comprends pas ? 
Marsh Posté le 28-01-2002 à 09:20:19
Alors là, je comprends rien de rien : 
 
Ce code marche très bien !!! 
 
Public Sub toto() 
    Dim Base As Database 
    'Dim RS As Recordset 
    'Dim FLD As Field 
     
    Set Base = Application.CurrentDb 
    Set RS = Base.OpenRecordset("select * from ARTICLE" ) 
 
    RS.MoveFirst 
    Do While RS.EOF = False 
        Text = "" 
        For Each FLD In RS.Fields 
            Text = Text & FLD.Value & vbTab 
        Next FLD 
        MsgBox Text, vbOKOnly 
        RS.MoveNext 
    Loop 
     
    RS.Close 
    Base.Close 
End Sub 
 
Mais si j'enlève les commentaires devant : 
 
Dim RS As Recordset 
Dim FLD As Field 
 
Ce qui serait plus "propre" alors ça ne merche plus ??? 
Marsh Posté le 28-01-2002 à 12:22:10
'Dim RS As Recordset 
'Dim FLD As Field 
 
pourquoi tu les mets en commentaire ? 
tu declare des variable comme objet, y'a pas a mettre d'apostrophe avant sinon c'est des commentaires   
  
 
et puis si tu utilise la classe d'objet DAO ce serait mieux de le spécifier dans le code: 
Dim Db as DAO.Database 
Dim Rs as DAO.Recordset 
Dim FLD as DAO.field 
Marsh Posté le 28-01-2002 à 14:15:06
| Liquid a écrit a écrit  : 'Dim RS As Recordset 'Dim FLD As Field pourquoi tu les mets en commentaire ? tu declare des variable comme objet, y'a pas a mettre d'apostrophe avant sinon c'est des commentaires   et puis si tu utilise la classe d'objet DAO ce serait mieux de le spécifier dans le code: Dim Db as DAO.Database Dim Rs as DAO.Recordset Dim FLD as DAO.field | 
 
 
Merci ! 
 
Les commentaires étaient indispensables sinon j'avais une erreur (incompatibilité de type) sans dout parce que openrecordset renvoit un objet de type DAO.Recordset alors que mon recordset était déclaré en Recordset mais pas DAO.Recordset. 
En mettant : 
 
   Dim Base As DAO.Database  
   Dim RS As DAO.Recordset  
   Dim FLD As DAO.Field  
     
   Set Base = Application.CurrentDb  
   Set RS = Base.OpenRecordset("select * from ARTICLE" )  
 
   RS.MoveFirst  
   Do While RS.EOF = False  
       Text = ""  
       For Each FLD In RS.Fields  
           Text = Text & FLD.Value & vbTab  
       Next FLD  
       MsgBox Text, vbOKOnly  
       RS.MoveNext  
   Loop  
     
   RS.Close  
   Base.Close  
End Sub  
 
ça marche, MERCI  
 
Marsh Posté le 28-01-2002 à 14:20:20
| Liquid a écrit a écrit  : 'Dim RS As Recordset 'Dim FLD As Field pourquoi tu les mets en commentaire ? tu declare des variable comme objet, y'a pas a mettre d'apostrophe avant sinon c'est des commentaires   et puis si tu utilise la classe d'objet DAO ce serait mieux de le spécifier dans le code: Dim Db as DAO.Database Dim Rs as DAO.Recordset Dim FLD as DAO.field | 
 
 
Au fait, comment tu fais sans utiliser la classe DAO sinon? 
Marsh Posté le 28-01-2002 à 14:45:22
j'ai pas travaillé avec les base de données en utilisant VBA mais plutot avec VB, remarque il doit pas y avoir trop de différences (juste pour preciser) 
 
dans VB tu as plusieurs classes d'objets pour travailler avec les bases de données: 
Data (le plus facile à mettre en oeuvre mais le moins flexible) 
DAO (soit disant abandonné pour ADO, mais moi je l':love: ) 
RDO 
ADO (le plus récent et censé être le plus performant) 
[edtdd]--Message édité par Liquid--[/edtdd]
Marsh Posté le 28-01-2002 à 15:01:33
| Liquid a écrit a écrit  : j'ai pas travaillé avec les base de données en utilisant VBA mais plutot avec VB, remarque il doit pas y avoir trop de différences (juste pour preciser) dans VB tu as plusieurs classes d'objets pour travailler avec les bases de données: Data (le plus facile à mettre en oeuvre mais le moins flexible) DAO (soit disant abandonné pour ADO, mais moi je l':love: ) RDO ADO (le plus récent et censé être le plus performant) | 
 
 
Est-ce que t'aurais un exemple avec ADO STP pour voir la différence? 
Marsh Posté le 27-01-2002 à 22:00:34
Voilà j'ai une erreur sur le code suivant :
Dim Db as database
Dim Rs as recordset
Set Db = Application.CurrentDb
Set Rs = Db.OpenRecordset("ARTICLE",dbOpenTable)
J'ai une erreur, il ne connaît pas le type "database" ???
Sinon avec ce code :
Dim Db as database
Dim Rs as recordset
Set Rs = Application.CurrentDb.OpenRecordset("ARTICLE",dbOpenTable)
J'ai une erreur 3001 "Argument non valide"
Pourtant ces exemples sont tirés d'un bouquin?
Quelque chose m'échape, j'ai besoin d'aide!!!