[ VBA ] Accéder aux enregistrements d'un table ?

Accéder aux enregistrements d'un table ? [ VBA ] - Programmation

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!!!

Reply

Marsh Posté le 27-01-2002 à 22:00:34   

Reply

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 ?

Reply

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 ?

Reply

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 ???

Reply

Marsh Posté le 28-01-2002 à 10:53:05    

Could you please ?

Reply

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  :crazy:  
 
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

Reply

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  :crazy:  
 
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 :)

Reply

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  :crazy:  
 
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?

Reply

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]

Reply

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?

Reply

Marsh Posté le 28-01-2002 à 15:01:33   

Reply

Marsh Posté le 28-01-2002 à 15:14:47    

Je connais que DAO

Reply

Marsh Posté le 28-01-2002 à 15:52:42    

Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed