OVH Cloud OVH Cloud

Bouton: On Click

6 réponses
Avatar
Jacques Terolf
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire bas=E9s sur des tables=20
li=E9es un =E0 plusieurs.
Un champ NomPRenom est commun. =3D clef dans la table=20
principale. Dans la table qui sert au sous formulaire la=20
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous=20
formulaire.=20
Le sous formulaire sert =E0 la saisie des honoraires et je=20
veux pouvoir imprimer en direct une facture avec un bouton=20
qui ouvre un =E9tat et imprime SEULEMENT les champs qui sont=20
pr=E9sents =E0 l'=E9cran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et =E7a marche ... sauf=20
que cela imprime toutes les saisies de la table et non=20
juste les donn=E9es pr=E9sentes sur l'=E9cran donc un seul=20
enregistrement :o((

Ci dessous le code que j'ai entr=E9 dans la rubrique=20
proc=E9dure =E9vennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName =3D "facture"
strCriteria =3D "[NomPrenom]=3D'" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,=20
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT=20
l'enregistrement en cours soit imprim=E9 et non toute la=20
liste pass=E9e pour ce client l=E0??

Merci
Jacques

6 réponses

Avatar
Mrs Pomemboo
Salut,

Si je saisis bien ce que tu dis, pour afficher seulement les champs de
l'écran en cours, tu dois utiliser comme critère la clef de ta table de
sous-formulaire en non pas celle de ta table principale. Ton critère devrait
ressembler plus à :

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= " &
Me![NomDuChampsAutoTableDuSousFormulaire]

puisque c'est l'enregistrement présentement en cours...

Espérant que ça répond à ta question !

Mrs Pomemboo
---------------------------

"Jacques Terolf" a écrit dans le message de news:
05d601c3527d$bbaca7b0$
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire basés sur des tables
liées un à plusieurs.
Un champ NomPRenom est commun. = clef dans la table
principale. Dans la table qui sert au sous formulaire la
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous
formulaire.
Le sous formulaire sert à la saisie des honoraires et je
veux pouvoir imprimer en direct une facture avec un bouton
qui ouvre un état et imprime SEULEMENT les champs qui sont
présents à l'écran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et ça marche ... sauf
que cela imprime toutes les saisies de la table et non
juste les données présentes sur l'écran donc un seul
enregistrement :o((

Ci dessous le code que j'ai entré dans la rubrique
procédure évennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName = "facture"
strCriteria = "[NomPrenom]='" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT
l'enregistrement en cours soit imprimé et non toute la
liste passée pour ce client là??

Merci
Jacques
Avatar
Jacques Terolf
Bonjour,
Merci pour cette réponse. C'est en effet ce que j'ai aussi
tenté. Ce qui ne va plus c'est que j'obtiens un
message "type de donnée incompatible" et que je ne sais
pas comment modifier le texte pour que cela devienne
compatible.

La numérotation auto créé des entier long, ausi j'ai tenté
de mettre intCriteria à la place de strCriteria.;mais cela
ne marche pas.

La solution doit être simple...si on connait le langage de
programmation utilisé et ce n'est pas vraiment mon cas.

merci pour votre future réponse
Bien cordialement
Jacques
_______________________________

-----Message d'origine-----
Salut,

Si je saisis bien ce que tu dis, pour afficher seulement
les champs de

l'écran en cours, tu dois utiliser comme critère la clef
de ta table de

sous-formulaire en non pas celle de ta table principale.
Ton critère devrait

ressembler plus à :

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= " &
Me![NomDuChampsAutoTableDuSousFormulaire]

puisque c'est l'enregistrement présentement en cours...

Espérant que ça répond à ta question !

Mrs Pomemboo
---------------------------

"Jacques Terolf" a écrit dans le
message de news:

05d601c3527d$bbaca7b0$
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire basés sur des tables
liées un à plusieurs.
Un champ NomPRenom est commun. = clef dans la table
principale. Dans la table qui sert au sous formulaire la
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous
formulaire.
Le sous formulaire sert à la saisie des honoraires et je
veux pouvoir imprimer en direct une facture avec un bouton
qui ouvre un état et imprime SEULEMENT les champs qui sont
présents à l'écran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et ça marche ... sauf
que cela imprime toutes les saisies de la table et non
juste les données présentes sur l'écran donc un seul
enregistrement :o((

Ci dessous le code que j'ai entré dans la rubrique
procédure évennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName = "facture"
strCriteria = "[NomPrenom]='" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT
l'enregistrement en cours soit imprimé et non toute la
liste passée pour ce client là??

Merci
Jacques

.



Avatar
Mrs Pomemboo
Salut,

Pour utiliser le numéroauto de type entier long, tu n'as pas à modifier
strCriteria par un type integer parce que la commande DoCmd.OpenReport
requiert une string comme arguments. Ajoute la fonction CStr() pour ramener
ton entier long en string, ça devrait fonctionner...

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= " &
Cstr(Me![NomDuChampsAutoTableDuSousFormulaire])

Espérant que ça réglera ton problème, laisses savoir sinon !
Mrs Pomemboo

"Jacques Terolf" a écrit dans le message de news:
080001c35383$f56c6a10$
Bonjour,
Merci pour cette réponse. C'est en effet ce que j'ai aussi
tenté. Ce qui ne va plus c'est que j'obtiens un
message "type de donnée incompatible" et que je ne sais
pas comment modifier le texte pour que cela devienne
compatible.

La numérotation auto créé des entier long, ausi j'ai tenté
de mettre intCriteria à la place de strCriteria.;mais cela
ne marche pas.

La solution doit être simple...si on connait le langage de
programmation utilisé et ce n'est pas vraiment mon cas.

merci pour votre future réponse
Bien cordialement
Jacques
_______________________________

-----Message d'origine-----
Salut,

Si je saisis bien ce que tu dis, pour afficher seulement
les champs de

l'écran en cours, tu dois utiliser comme critère la clef
de ta table de

sous-formulaire en non pas celle de ta table principale.
Ton critère devrait

ressembler plus à :

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= " &
Me![NomDuChampsAutoTableDuSousFormulaire]

puisque c'est l'enregistrement présentement en cours...

Espérant que ça répond à ta question !

Mrs Pomemboo
---------------------------

"Jacques Terolf" a écrit dans le
message de news:

05d601c3527d$bbaca7b0$
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire basés sur des tables
liées un à plusieurs.
Un champ NomPRenom est commun. = clef dans la table
principale. Dans la table qui sert au sous formulaire la
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous
formulaire.
Le sous formulaire sert à la saisie des honoraires et je
veux pouvoir imprimer en direct une facture avec un bouton
qui ouvre un état et imprime SEULEMENT les champs qui sont
présents à l'écran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et ça marche ... sauf
que cela imprime toutes les saisies de la table et non
juste les données présentes sur l'écran donc un seul
enregistrement :o((

Ci dessous le code que j'ai entré dans la rubrique
procédure évennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName = "facture"
strCriteria = "[NomPrenom]='" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT
l'enregistrement en cours soit imprimé et non toute la
liste passée pour ce client là??

Merci
Jacques

.



Avatar
Jacques Terolf
YOUPIIIIIIII

Merci :o))


Il reste encore un point à améliorer:
après la saisie des champs du sous formulaire et pour que
l'état s'ouvre non vide... il me faut d'abord cliquer sur
un champ du formulaire principal.
je pense que cela doit forcer Access à enregistrer la
saisie du sous formulaire et alors le bouton imprimer
ouvre bien l'état de la facture avec les données de cet
enregistrement affiché à l'écran: ce que je veux se
réalise donc.

La question complémentaire est donc:
y-a-t-il un moyen pour forcer l'enregistrement avant
l'ouverture de l'état "facture" ??


De toute façon déjà un grand merci :o))

... subsidiairement où/comment apprendre à programmer
Access avec un minium d'efficacité ? (exemple avez-vous
une formation académique ou bien vous êtes vous formée à
en utilisant et "bidouillant" ?

Bien cordialement
Jacques

______________________________________
-----Message d'origine-----
Salut,

Pour utiliser le numéroauto de type entier long, tu n'as
pas à modifier

strCriteria par un type integer parce que la commande
DoCmd.OpenReport

requiert une string comme arguments. Ajoute la fonction
CStr() pour ramener

ton entier long en string, ça devrait fonctionner...

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= " &
Cstr(Me![NomDuChampsAutoTableDuSousFormulaire])

Espérant que ça réglera ton problème, laisses savoir
sinon !

Mrs Pomemboo

"Jacques Terolf" a écrit dans le
message de news:

080001c35383$f56c6a10$
Bonjour,
Merci pour cette réponse. C'est en effet ce que j'ai aussi
tenté. Ce qui ne va plus c'est que j'obtiens un
message "type de donnée incompatible" et que je ne sais
pas comment modifier le texte pour que cela devienne
compatible.

La numérotation auto créé des entier long, ausi j'ai tenté
de mettre intCriteria à la place de strCriteria.;mais cela
ne marche pas.

La solution doit être simple...si on connait le langage de
programmation utilisé et ce n'est pas vraiment mon cas.

merci pour votre future réponse
Bien cordialement
Jacques
_______________________________

-----Message d'origine-----
Salut,

Si je saisis bien ce que tu dis, pour afficher seulement
les champs de

l'écran en cours, tu dois utiliser comme critère la clef
de ta table de

sous-formulaire en non pas celle de ta table principale.
Ton critère devrait

ressembler plus à :

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= "
&


Me![NomDuChampsAutoTableDuSousFormulaire]

puisque c'est l'enregistrement présentement en cours...

Espérant que ça répond à ta question !

Mrs Pomemboo
---------------------------

"Jacques Terolf" a écrit dans le
message de news:

05d601c3527d$bbaca7b0$
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire basés sur des tables
liées un à plusieurs.
Un champ NomPRenom est commun. = clef dans la table
principale. Dans la table qui sert au sous formulaire la
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous
formulaire.
Le sous formulaire sert à la saisie des honoraires et je
veux pouvoir imprimer en direct une facture avec un
bouton


qui ouvre un état et imprime SEULEMENT les champs qui
sont


présents à l'écran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et ça marche ...
sauf


que cela imprime toutes les saisies de la table et non
juste les données présentes sur l'écran donc un seul
enregistrement :o((

Ci dessous le code que j'ai entré dans la rubrique
procédure évennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName = "facture"
strCriteria = "[NomPrenom]='" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT
l'enregistrement en cours soit imprimé et non toute la
liste passée pour ce client là??

Merci
Jacques

.



.




Avatar
Mrs Pomemboo
"Jacques Terolf" a écrit dans le message de news:
03b101c35427$5cb96ee0$
YOUPIIIIIIII

Merci :o))


Il reste encore un point à améliorer:
après la saisie des champs du sous formulaire et pour que
l'état s'ouvre non vide... il me faut d'abord cliquer sur
un champ du formulaire principal.
je pense que cela doit forcer Access à enregistrer la
saisie du sous formulaire et alors le bouton imprimer
ouvre bien l'état de la facture avec les données de cet
enregistrement affiché à l'écran: ce que je veux se
réalise donc.

La question complémentaire est donc:
y-a-t-il un moyen pour forcer l'enregistrement avant
l'ouverture de l'état "facture" ??

<<<
ordinairement, on va le faire en passant le focus sur le formulaire
principal en effet ou peut-être utiliser la commande sauvegarder, mais là...
je ne suis pas certaine pour cette dernière. Tu peux ajouter la commande
suivante dans ta procédure, juste avant d'ouvrir ton rapport pour
sauvegarder l'enregistrement en cours :
DoCmd.RunCommand acCmdSaveRecord
ou choisir un contrôle de ton formulaire principal et lui passer le focus
comme :
[NomFormulairePrincipal]![NomContrôle].SetFocus

À toi de voir, moi, je suis présentement à trouver une solution pour un
problème similaire !






De toute façon déjà un grand merci :o))

... subsidiairement où/comment apprendre à programmer
Access avec un minium d'efficacité ? (exemple avez-vous
une formation académique ou bien vous êtes vous formée à
en utilisant et "bidouillant" ?
<< Personnellement, je dispose déjà d'une formation, mais la majorité des
fonctionnalités et technicalités ont été apprises directement via le net et
surtout, à travers les news et les sites d'Access. Nous avons la très grand
chance, nous programmeurs tout court, d'avoir à portée de main les conseils
d'experts(es) et passionnés(es) d'Access... Voici une liste de liens où tu
pourras trouver nombres de conseils, de codes et exemples pour bidouiller
pendant des heures... :-)
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/
http://www.anor.fr.st

Bon plaisir !


Bien cordialement



Jacques

______________________________________
-----Message d'origine-----
Salut,

Pour utiliser le numéroauto de type entier long, tu n'as
pas à modifier

strCriteria par un type integer parce que la commande
DoCmd.OpenReport

requiert une string comme arguments. Ajoute la fonction
CStr() pour ramener

ton entier long en string, ça devrait fonctionner...

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= " &
Cstr(Me![NomDuChampsAutoTableDuSousFormulaire])

Espérant que ça réglera ton problème, laisses savoir
sinon !

Mrs Pomemboo

"Jacques Terolf" a écrit dans le
message de news:

080001c35383$f56c6a10$
Bonjour,
Merci pour cette réponse. C'est en effet ce que j'ai aussi
tenté. Ce qui ne va plus c'est que j'obtiens un
message "type de donnée incompatible" et que je ne sais
pas comment modifier le texte pour que cela devienne
compatible.

La numérotation auto créé des entier long, ausi j'ai tenté
de mettre intCriteria à la place de strCriteria.;mais cela
ne marche pas.

La solution doit être simple...si on connait le langage de
programmation utilisé et ce n'est pas vraiment mon cas.

merci pour votre future réponse
Bien cordialement
Jacques
_______________________________

-----Message d'origine-----
Salut,

Si je saisis bien ce que tu dis, pour afficher seulement
les champs de

l'écran en cours, tu dois utiliser comme critère la clef
de ta table de

sous-formulaire en non pas celle de ta table principale.
Ton critère devrait

ressembler plus à :

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= "
&


Me![NomDuChampsAutoTableDuSousFormulaire]

puisque c'est l'enregistrement présentement en cours...

Espérant que ça répond à ta question !

Mrs Pomemboo
---------------------------

"Jacques Terolf" a écrit dans le
message de news:

05d601c3527d$bbaca7b0$
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire basés sur des tables
liées un à plusieurs.
Un champ NomPRenom est commun. = clef dans la table
principale. Dans la table qui sert au sous formulaire la
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous
formulaire.
Le sous formulaire sert à la saisie des honoraires et je
veux pouvoir imprimer en direct une facture avec un
bouton


qui ouvre un état et imprime SEULEMENT les champs qui
sont


présents à l'écran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et ça marche ...
sauf


que cela imprime toutes les saisies de la table et non
juste les données présentes sur l'écran donc un seul
enregistrement :o((

Ci dessous le code que j'ai entré dans la rubrique
procédure évennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName = "facture"
strCriteria = "[NomPrenom]='" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT
l'enregistrement en cours soit imprimé et non toute la
liste passée pour ce client là??

Merci
Jacques

.



.






Avatar
jacques Terolf
Merci.

Je vous souhaite de trouver la même aide:o)

Cordialement
Jacques
____________________________________
-----Message d'origine-----

"Jacques Terolf" a écrit dans le
message de news:

03b101c35427$5cb96ee0$
YOUPIIIIIIII

Merci :o))


Il reste encore un point à améliorer:
après la saisie des champs du sous formulaire et pour que
l'état s'ouvre non vide... il me faut d'abord cliquer sur
un champ du formulaire principal.
je pense que cela doit forcer Access à enregistrer la
saisie du sous formulaire et alors le bouton imprimer
ouvre bien l'état de la facture avec les données de cet
enregistrement affiché à l'écran: ce que je veux se
réalise donc.

La question complémentaire est donc:
y-a-t-il un moyen pour forcer l'enregistrement avant
l'ouverture de l'état "facture" ??

<<<
ordinairement, on va le faire en passant le focus sur le
formulaire

principal en effet ou peut-être utiliser la commande
sauvegarder, mais là...

je ne suis pas certaine pour cette dernière. Tu peux
ajouter la commande

suivante dans ta procédure, juste avant d'ouvrir ton
rapport pour

sauvegarder l'enregistrement en cours :
DoCmd.RunCommand acCmdSaveRecord
ou choisir un contrôle de ton formulaire principal et lui
passer le focus

comme :
[NomFormulairePrincipal]![NomContrôle].SetFocus

À toi de voir, moi, je suis présentement à trouver une
solution pour un

problème similaire !






De toute façon déjà un grand merci :o))

.... subsidiairement où/comment apprendre à programmer
Access avec un minium d'efficacité ? (exemple avez-vous
une formation académique ou bien vous êtes vous formée à
en utilisant et "bidouillant" ?
<< Personnellement, je dispose déjà d'une formation, mais
la majorité des

fonctionnalités et technicalités ont été apprises
directement via le net et

surtout, à travers les news et les sites d'Access. Nous
avons la très grand

chance, nous programmeurs tout court, d'avoir à portée de
main les conseils

d'experts(es) et passionnés(es) d'Access... Voici une
liste de liens où tu

pourras trouver nombres de conseils, de codes et exemples
pour bidouiller

pendant des heures... :-)
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/
http://www.anor.fr.st

Bon plaisir !


Bien cordialement



Jacques

______________________________________
-----Message d'origine-----
Salut,

Pour utiliser le numéroauto de type entier long, tu n'as
pas à modifier

strCriteria par un type integer parce que la commande
DoCmd.OpenReport

requiert une string comme arguments. Ajoute la fonction
CStr() pour ramener

ton entier long en string, ça devrait fonctionner...

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= "
&


Cstr(Me![NomDuChampsAutoTableDuSousFormulaire])

Espérant que ça réglera ton problème, laisses savoir
sinon !

Mrs Pomemboo

"Jacques Terolf" a écrit dans le
message de news:

080001c35383$f56c6a10$
Bonjour,
Merci pour cette réponse. C'est en effet ce que j'ai
aussi


tenté. Ce qui ne va plus c'est que j'obtiens un
message "type de donnée incompatible" et que je ne sais
pas comment modifier le texte pour que cela devienne
compatible.

La numérotation auto créé des entier long, ausi j'ai
tenté


de mettre intCriteria à la place de strCriteria.;mais
cela


ne marche pas.

La solution doit être simple...si on connait le langage
de


programmation utilisé et ce n'est pas vraiment mon cas.

merci pour votre future réponse
Bien cordialement
Jacques
_______________________________

-----Message d'origine-----
Salut,

Si je saisis bien ce que tu dis, pour afficher seulement
les champs de

l'écran en cours, tu dois utiliser comme critère la clef
de ta table de

sous-formulaire en non pas celle de ta table principale.
Ton critère devrait

ressembler plus à :

strCriteria = "[NomDuChampsAutoTableDuSousFormulaire]= "
&


Me![NomDuChampsAutoTableDuSousFormulaire]

puisque c'est l'enregistrement présentement en cours...

Espérant que ça répond à ta question !

Mrs Pomemboo
---------------------------

"Jacques Terolf" a écrit dans le
message de news:

05d601c3527d$bbaca7b0$
Bonjour, et merci d'avance pour votre aide.

La situation est:
un formulaire et un sous formualire basés sur des tables
liées un à plusieurs.
Un champ NomPRenom est commun. = clef dans la table
principale. Dans la table qui sert au sous formulaire la
clef est un champ numero automatique.

Le NomPrenom s'affiche automatiquement dans le sous
formulaire.
Le sous formulaire sert à la saisie des honoraires et je
veux pouvoir imprimer en direct une facture avec un
bouton


qui ouvre un état et imprime SEULEMENT les champs qui
sont


présents à l'écran

Ce que j'ai fait:

J'ai repris une rubrique de ce site. et ça marche ...
sauf


que cela imprime toutes les saisies de la table et non
juste les données présentes sur l'écran donc un seul
enregistrement :o((

Ci dessous le code que j'ai entré dans la rubrique
procédure évennementielle du bouton (sur click)
_________

Private Sub facture_Click()
Dim strReportName As String
Dim strCriteria As String

strReportName = "facture"
strCriteria = "[NomPrenom]='" & Me![NomPrenom] & "'"
DoCmd.OpenReport strReportName, acViewPreview, ,
strCriteria
End Sub
__________________
Question:
Que modifier ou ajouter pour que SEULEMENT
l'enregistrement en cours soit imprimé et non toute la
liste passée pour ce client là??

Merci
Jacques

.



.



.