Résultat d'une requete SQL dans une variable [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
23 juillet 2007
-
Messages postés
4
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
23 juillet 2007
-
Bonjour, 

Je souhaiterai mettre le résultat de ma requete SQL dans une variable, mais n'ayant pas vraiment de connaissance en VB, je n'arrive pas à le faire marcher.

Mon code est le suivant:

    Dim  strSQL, resu As String
                
    On Error Resume Next    strSQL "SELECT codeFamille FROM Family WHERE codeFamille '*' "
    resu = CurrentDb.openrecordset(strSQL, dbopensnapshot).Fields("codeFamille").Value
    On Error GoTo 0

Merci par avance pour les réponses que vous me donnerez

8 réponses

Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
On peut faire ça ?
resu = CurrentDb.openrecordset(strSQL, dbopensnapshot).Fields("codeFamille").Value
C'est une syntaxte que je ne connais pas en tous cas et qui m'étonne, puisqu'une requete SQL peut remonter n enregistrements, on ne peut pas affetcer comme ça la propriété .value à une variable

Pour moi, resu doit déjà être déclaré de type Recordset.
Ensuite, on lui affecte la requête avec un Set
Set resu = CurrentDb.openrecordset(strSQL, dbopensnapshot)
Puis on navigue dans le recordset pour trouver notre enregistrement, au moins le premier :
resu.movefirst

Et là seulement, on peut mettre dans une variable du type voulu le résultat :
Dim Toto as String
Toto = resu.fields("CodeFamille").value

Au passage, je ne m'abuse, c'est du DAO. Puisque tu débutes, autant commencer directement par l'ADO, autant prendre de bonnes habitudes, le DAO sera de moins en moins fiables avec le temps, puisque non maintenu

Molenn
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
SAlut,
Si tu enlèves les On Error Resume NExt tu pourras voir si il y a une erreur et si oui laquelle (ca aide pour développer).
De plus On Error Resume NExt Ignore toutes les erreurs alors ce n'est aps non plus très propre.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
99
Hum, t'es sûr que c'est du .net ??? Ca ressemble étrangement à du vb6 !
Messages postés
4
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
23 juillet 2007

Si j'enlève On Error Resume Next, il y a bien une erreur qui est

"argument non valide"

Mais ça ne m'aide pas vu que je ne comprends rien à VB !
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
Et pour DARKSIDIOUS, je dirais même plus, l'emploi de CurrentDb me fait penser qu'il s'agit de VBA ACCESS

Molenn
Messages postés
4
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
23 juillet 2007

Même avec ce que tu m'as dit Molenn, ça ne marche toujours pas.
J'ai toujours la même erreur "argument non valide"

Je ne comprends pas d'ou elle vient.
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
Heu, je viens de voir autre chose :strSQL "SELECT codeFamille FROM Family WHERE codeFamille '*' "

Quand on veut utiliser l'astérisque dans une requête SQL, c'est pour remplacer une chaîne de caractère. Faire un égal ne fonctionnera donc pas.
Argument non valide ne signifie pas une erreur dans le programme (quoique); mais une erreur dans la requête : essaye plutôt
strSQL = "SELECT codeFamille FROM Family WHERE codeFamille LIKE '*' "

Molenn
Messages postés
4
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
23 juillet 2007

Non mais l'erreur n'est pas du au = à la place du like, parce que je l'avais déjà corrigée celle là.

Il doit  y avoir un autre problème avec mes arguments dans

Set resu = CurrentDb.openrecordset(strSQL, dbopensnapshot)

parce que c'est au nuveau de cette ligne que j'ai le message argument invalide