Comment afficher le contenus d'une table en access dans une appl VB6
toufiqihaddou
Messages postés38Date d'inscriptionjeudi 13 janvier 2011StatutMembreDernière intervention23 juillet 2011
-
12 mai 2011 à 23:22
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
13 mai 2011 à 17:37
Salut tout le monde, j'ai ce code qui marche dans une application mais dans cette nouvelle appl non, elle s'affiche vide, est ce que j'ai oublier quelque chose, voici le code :
Dim rs As New Recordset
Private Sub Form_Load()
Set cn = New Connection
With cn
.Provider = "Microsoft.jet.oledb.4.0"
.ConnectionString = "Gestion de pharmacie.mdb"
.Open
End With
rs.CursorLocation = adUseClient
rs.Open "select * from [Medicament] order by LibelleMedicament", cn, adOpenStatic, adLockOptimistic
rs.Sort = "CodeMedicament ASC"
Set DataGrid1.DataSource = rs
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 mai 2011 à 02:10
Salut
De quel types (référence) sont tes variables cn ou rs ?
On le répète à tour de bras : DAO (Microsoft DAO 3.6 Object Library) est obsolète. Il faut utiliser ADODB (Microsoft ActiveX Data Objects 2.8 Library) - les méthodes sont pratiquement les mêmes, mais DAO ne fonctionne pas toujours, méfiance (surtout dans la méthode .Find).
Oui, tu as oublié de vérifier que la connexion était correcte avant de faire ta requête --> tester si cn.State = adStateOpen avant de poursuivre.
A quoi te sert le "Order By" dans la requête SQL puisque tu les réorganise lors du rs.Sort ?
Perso, je garderai le Order by et supprimerai le .Sort
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 mai 2011 à 10:29
"Oui, la connéction marche bien"
Il n'y a qu'en testant le .State que tu le sauras.
"le Datagrid dans le formulaire n'affiche rien"
Oui, mais est-ce que le RecordSet contient lui-même quelque chose ?
Que donne rs.RecordCount après le rs.Open ?
As-tu vérifié dans les doc que c'est comme ça qu'on envoie un RecordSet à une DataGrid ?
Je reviens sur ta syntaxe :
rs.Open
ça n'existe pas en DAO.
Revois ta syntaxe car elle ne peut pas fonctionner.
La première chose à faire en cas de problème (réflexe du programmeur) :
- Demander une compilation du programme avant exécution :
Sous VB6, il faut lancer l'apllication avec Ctrl-F5 et pas F5
Sous VBA, menu Débogage + Compilation
- Supprimer absolument tous les "On Error Resume Next" de ton programme.
Cette méthode de gestion de l'erreur masque toutes les erreurs et il devient impossible de les détecter. Elle ne doit être utilisée que dans certains cas très précis.
toufiqihaddou
Messages postés38Date d'inscriptionjeudi 13 janvier 2011StatutMembreDernière intervention23 juillet 2011 13 mai 2011 à 14:11
Salut,
Oui merci c'est ce que je vais faire, je vais changer la méthode, pour .State, il y a un débogage dans le programme lorsqu'il arrive à cette ligne, merci beaucoup pour vos réponses, si vous avez un exemple concret de ADODB pour le Datagrid, pouvez vous me le parvenir ?