Pb requete via vba (pour acess)
Vincent
-
siribie Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
siribie Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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 :
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
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
A voir également:
- Pb requete via vba (pour acess)
- Via michelin carte - Télécharger - Transports & Cartes
- Excel compter cellule couleur sans vba - Guide
- Partager des photos via un lien - Guide
- ViaMichelin - Télécharger - Transports & Cartes
- Incompatibilité de type vba ✓ - Forum VB / VBA
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)
à 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)
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)
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)