Pb requete via vba (pour acess)

Fermé
Vincent - 29 juin 2004 à 16:37
siribie Messages postés 3 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 12 septembre 2005 - 17 janv. 2005 à 15:30
Bonjour,

J'ai un formulaire access qui contient une fois rempli un ensemble de valeurs, notament une correspondant à un type de media (Film,Musique,...). Je chercher dans un premier temps à récupéré soir dans une variable soit dans un RecordSet l'identifiant correpondant à ce champs dans la table Type. Voici mon code :
 
Dim resrqidT As Recordset

Set resrqidT = db.OpenRecordset("SELECT idT FROM Type where  NomT= [Formulaires]![ajout]![TypeM]", dbOpenDynaset, dbSeeChanges, dbPessimistic)


C'est logiquement le [Formulaires]![ajout]![TypeM] qui pose problème. J'ai essayé quelques trucs comme des . a la place des ! ou sans les crochets mais ce ne passe pas. Le code est executé sur validation de l'utilisateur (bouton)

Merci d'avance,

Vincent

2 réponses

Salut,

à mon avis, ce vient du fait que dans la définition en SQL de ta requête, tu fasses directement appel à la valeur d'un contrôle d'un formulaire.

J'écrirais un truc du type :

Set resrqidT = db.OpenRecordset("SELECT idT FROM Type where NomT= " & [Formulaires]![ajout]![TypeM], dbOpenDynaset)

Et attention :

- si le type de TypeM est numérique, il faut mettre cstr([Formulaires]![ajout]![TypeM])

- si le type est une chaîne de caractères, alors il faut ajouter dans la définition de la requête des apostrophes :
where NomT= """ & [Formulaires]![ajout]![TypeM] & """"

(et cerise sur le gâteau, vérifier si la valeur de TypeM ne comprend pas elle-même des apostrophes auquel cas il faut les doubler)
0
siribie Messages postés 3 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 12 septembre 2005
17 janv. 2005 à 15:30
Je compète ce que JefEnSuz à écrit.

Si vous voulez être à 100% sûr que ça marche, précisez davantage
(dans le cas où vous auriez des champs de noms identiques dans des tables différentes) en faisant :

VotreTable1.VotreChampIdentique
Votretable2. VotreChampIdentique

Set resrqidT = db.OpenRecordset("SELECT Type.idT FROM Type where Type.NomT= " & [Formulaires]![ajout]![TypeM], dbOpenDynaset)
0