ACCESS - VBA pb de reconnaissance de champs

cs_tari Messages postés 34 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 29 avril 2005 - 26 juil. 2004 à 11:03
lebourgjf Messages postés 29 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 6 août 2004 - 5 août 2004 à 01:46
bonjour à tous !
voila mon problème : j'ai créé une application sous access qui gère des devis.
l'utilisateur enregistre les données du devis. il peut grâce à une page que j'ai créé visualiser tout les devis
sur mon formulaire il y a une en-tête qui correspond à une affaire et un sous-formulaire qui reprend les en-tête des devis.
grâce à un bouton ils peuvent accéder aux détails du devis sur une autre feuille.
j'aimerais que lorsque l'utilisateur positionne le curseur sur la ligne du devis dont il veut voir le détails et qu'il clique sur le bouton la page qui s'ouvre corresponde au devis sélectionné.
une employé a déja utilisé ce principe mais quand je l'applique a mon prog en modifiant le nom des champs, j'ai une boite de dialogue qui s'affiche disant qu'il ne reconnait pas mon champ et me demande de saisir sa valeur.
voici le code que j'ai utilisé :

' Ouvrir le formulaire pour le devis en cours
If Not IsNull([Forms]![F_rep_devis]![SF_rep_devis].[Form]![indice_propo]) Then
DoCmd.OpenForm "F_devis_details", acNormal, "", "[AF]=[Forms]![F_rep_devis]![AF] And [indice_propo]=[Forms]![F_rep_devis]![SF_rep_devis].[Form]![indice_propo]", acEdit, acNormal
Else
Beep
MsgBox "Chosir une propo", vbOKOnly, "ATTENTION !"
End If

("F_rep_devis" est le nom du formulaire comprenant l'en-tête de l'AF, "SF_rep_devis" est le sous-formulaire avec l'en-tête du devis et F_devis_details est le formulaire avec le détails du devis.
un devis est identifié par un n° d'AF é un indice_propo)
le programe ne reconnait pas : [Forms]![F_rep_devis]![SF_rep_devis].[Form]![indice_propo]
qu'est-ce qui ne va pa dans mon code ???
aidez moi
merci

3 réponses

cs_mguilhem Messages postés 69 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 26 novembre 2005
26 juil. 2004 à 11:24
Bien,

peut-être q'une de ces réponses te conviendra:

Me!SF_rep_devis.Form.Controls!indice_propo

ou

Me!SF_rep_devis.Form.Controls!indice_propo.text

ou

Me!SF_rep_devis.Form.Controls!indice_propo.caption

Tiens moi au courant,

Bye!
0
cs_tari Messages postés 34 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 29 avril 2005
26 juil. 2004 à 11:53
ok j'ai trouvé le pb :

If Not IsNull([Forms]![F_rep_devis]![SF_rep_devis].[Form]![indice_propo]) Then

c'est pas "SF_rep_devis" qu'il fallait que je mette parce que c'est le nom du sous-formulaire mais c'est pas ce nom qui est reconnu dans le formulaire, donc maintenant sa done sa :

' Ouvrir le formulaire pour la commande en cours
If Not IsNull([Forms]![F_rep_devis]![Fille36].[Form]![indice_propo].Value) Then
DoCmd.OpenForm "F_devis_details", acNormal, "", "[indice_propo]=[Forms]![F_rep_devis]![indice_propo] ", acEdit, acNormal
Else
Beep
MsgBox "Choisir le n° de propo", vbOKOnly, "ATTENTION !"
End If

Le prog prend bien la valeur du champ du sous formulaire et il m'ouvre le formulaire mais il n'affiche aucune valeur.
est-ce que je dois précisé quelque chose dans le formualaire qui s'ouvre (filtre, ...) ?
merci
0
lebourgjf Messages postés 29 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 6 août 2004
5 août 2004 à 01:46
Réfléchissons :

- de quel type est le champ [indice_propo] ?

si c'est du texte, à mon avis, il faut mettre des guillemets entre [forms]![f_rep_devis]![indice_propo]

- est-ce nécessaire de mentionner le filtreName avec "" ? Je le laisserai vide.

- si tu dis que la valeur du sous-formulaire est bien prise, alors pourquoi ce n'est pas la même dans la condition ? (il n'y a pas [Fille36].[Form] de mentionné...). Je mettrais la valeur du sous-formulaire dans une variable que j'appellerai dans la condition :

If Not IsNull([Forms]![F_rep_devis]![Fille36].[Form]![indice_propo].Value) Then

valeur = ([Forms]![F_rep_devis]![Fille36].[Form]![indice_propo].Value

DoCmd.OpenForm "F_devis_details", acNormal, "", "[indice_propo]= " & cstr(valeur), acEdit, acNormal
's'il s'agit d'un numérique

Else
...

- le sous-formulaire est lié à une table ? si tel est le cas, on peut peut être faire :

DoCmd.OpenForm "F_devis_details"
DoCmd.GoToRecord , , acGoTo, valeur
0
Rejoignez-nous