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
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)
"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.
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 ?