VBA Problème Recorset

Résolu
Signaler
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011
-
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011
-
Bonjour à tous,
J'ai bos chercher sur le net je ne trouve pas réponse à mon problème je vous drais récupérer le résultat d'une requête dans une zone de texte sachant que ma requéte ne me renverra qu'un seul résultat

Dim db As Database
Dim strSql As String
Dim rs As Recordset
Set db = CurrentDb
strSql = "select A from table where identifiant=1 "
Set rs = db.OpenRecordset(strSql)
rs.MoveFirst
Do While Not rs.EOF
MsgBox (rs.Fields(1).Value)
rs.MoveNext
Loop

16 réponses

Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

Merci de ta patience j'ai finit par trouver la solution je suis vraiment un boulet ma base est sur un serveur sql donc current db est forcément vide
Merci bien
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
un seul champ ?

Fields(0)

et non 1


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

merci de ta réponse,
mais la ligne
Set rs = db.OpenRecordset(strSql)
ne fonctionne pas je ne comprend pas pourquoi
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
c'est vague, "ne fonctionne pas"

si ta table s'appelle bien "table"
que le champ voulu se nomme bien "A"
et que l'identifiant....

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

Cela me met
Variable Objet ou variable de block with non définie
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
ok, mais a quel ligne ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

Set rs = db.OpenRecordset(strSql)
A cette ligne je ne comprend pas ... J'ai même copier des codes fonctionnant pour d'autres personnes en modifiant la requéte est toujours la même erreur
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
et ton CurrentDB il est tombé du cocotier ?

tu est bien sous Access ?

veilles bien a jouer avec :

Option Explicit

tout en haut de ton module

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

Je viens de le rajouter à quoi sert cette option (désolé pour ma curiosité)
Oui je suis bien sous ACCESS 2007
Mon currentdb pour dire qu'il utilise la base de donnée courante nn ?
Merci pour tes réponses
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Option Explicit permet d'empecher d'utiliser des varaibles non déclarées.

Ce Message (Variable Objet ou variable de block with non définie)
signifie que tu tentes d'accéder à une propriété ou une méthode d'un objet qui ne référence pas une instance de ta classe.

Comme si finallement db était à 'Nothing'

nettoyons ton code :

With CurrentDb.OpenRecordset("SELECT `A` FROM `table` WHERE `identifiant`=1 ")
    .MoveFirst 
    Do Until .EOF 
        MsgBox .Fields(0).Value
        .MoveNext 
    Loop
    .Close
End With


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

je crois je suis un boulet enfin cela ne fonctionne toujours pas comment étre sur que db n'est pas a nothing ?
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
ben en testant ^^

If db Is Nothing Then
   msgbox "nothing"
Else
   msgbox "pas nothing"
endif


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

et ben tu as raison c'est ca db est vide
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
après, tu peux utiliser CurrentDB plutot que db, mais le resultat risque d'etre le meme ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

exacte c'est pareil as tu une idée ?
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
pas vraiment, je joues peu sous Access...
je code en VB6 et je me connecte a la base, juste...

je fais pas de forumlaires Access, so ...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp