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