Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Inscription automatique de la donnée de jointure

5 réponses
Avatar
Bauwens François
Salut,

J'ai créé un formulaire sur lequel je place un bouton qui ouvre un autre
formulaire grâce au code :

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG & "'"

Ca fonctionne si le champ 'fk_code_dg' est déjà rempli mais je pensais que
normalement il écrirait la référence Me.CODE_DG si le champ est vide, donc
si c'est un nouvel enregistrement mais non ! J'étais persuadé de l'avoir
déjà fait mais bon...

Est-ce que j'oublie un truc ?

Merci
Frans

5 réponses

Avatar
Bauwens François
Un ch'tit coup de main siouplé !

J'ai créer une toute petite base de test pour voir si c'était différent. Je
sais pas ou je bug !!! Mais je suis pratiquement certain que j'ai déjà créé
un truc pareil où le lien se fait automatiquement sans devoir l'introduire à
la main !!!! Mais peut-être que je l'ai rêvé.

Si vous avez une idée ou une remarques, merci de m'en faire part parce que
ça doit être évident mais je ne vois pas...
Merci pour votre aide

"Bauwens François" a écrit dans le message de
news:
Salut,

J'ai créé un formulaire sur lequel je place un bouton qui ouvre un autre
formulaire grâce au code :

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG & "'"

Ca fonctionne si le champ 'fk_code_dg' est déjà rempli mais je pensais que
normalement il écrirait la référence Me.CODE_DG si le champ est vide, donc
si c'est un nouvel enregistrement mais non ! J'étais persuadé de l'avoir
déjà fait mais bon...

Est-ce que j'oublie un truc ?

Merci
Frans




Avatar
ze_titi
Ton objectif est de lancer la création d'un nouvel enregistrement si ton code
n'existe pas, c'est ça ?

Je ne suis pas persuadé que l'on puisse faire ça directement mais dans le
doute, essaie:

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG &
"'",acFormAdd


--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Un ch'tit coup de main siouplé !

J'ai créer une toute petite base de test pour voir si c'était différent. Je
sais pas ou je bug !!! Mais je suis pratiquement certain que j'ai déjà créé
un truc pareil où le lien se fait automatiquement sans devoir l'introduire à
la main !!!! Mais peut-être que je l'ai rêvé.

Si vous avez une idée ou une remarques, merci de m'en faire part parce que
ça doit être évident mais je ne vois pas...
Merci pour votre aide

"Bauwens François" a écrit dans le message de
news:
Salut,

J'ai créé un formulaire sur lequel je place un bouton qui ouvre un autre
formulaire grâce au code :

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG & "'"

Ca fonctionne si le champ 'fk_code_dg' est déjà rempli mais je pensais que
normalement il écrirait la référence Me.CODE_DG si le champ est vide, donc
si c'est un nouvel enregistrement mais non ! J'étais persuadé de l'avoir
déjà fait mais bon...

Est-ce que j'oublie un truc ?

Merci
Frans









Avatar
Bauwens François
Merci pour ton aide.

Bon manifestement je ne suis pas clair. Je vais faire une longue et
exhaustive explication ne soit pas effrayé c'est simple et peut-être que le
problème te sautera au yeux (donc prudence quant-même)

Disons qu'il y a :
une table Nom avec 2 champs :
id_nom en numéroauto
nom en texte

une table Subvention avec 3 champs :
id_sub en numéroAuto
fk_nom en numérique
montant en numérique

Je lie, dans la fenêtre relation, le champ id_nom (un) au champ fk_nom
(plusieurs)

Je crée un formulaire sur base de la table nom et j'y ajoute un bouton qui
ouvre le formulaire que j'ai créé sur base de la table subvention.
Ce qui me chipotte c'est que le champ fk_nom ne se mette pas à jour tout
seul quand j'appuye sur mon bouton d'ouverture. Je suis donc obligé de
rentré "1" (par exemple pour le premier nom) sinon le lien ne se fera pas.

Il me semble que j'ai déjà réalisé ce type de liaison entre formulaire et
que le champ fk_nom peut se mettre à jour automatiquement en repiquant la
référence du champ id_nom, que ce ne soit pas nécessaire de le rentré à
chaque fois à la main. Mais peut-être que je me trompe. Il me semblait
qu'access gérait ça tout seul.

voilà, j'espère en tout cas avoir été plus clair.
Merci pour ton attention et ton aide
Frans


"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de
news:
Ton objectif est de lancer la création d'un nouvel enregistrement si ton
code

n'existe pas, c'est ça ?

Je ne suis pas persuadé que l'on puisse faire ça directement mais dans le
doute, essaie:

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG &
"'",acFormAdd


--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Un ch'tit coup de main siouplé !

J'ai créer une toute petite base de test pour voir si c'était différent.
Je


sais pas ou je bug !!! Mais je suis pratiquement certain que j'ai déjà
créé


un truc pareil où le lien se fait automatiquement sans devoir
l'introduire à


la main !!!! Mais peut-être que je l'ai rêvé.

Si vous avez une idée ou une remarques, merci de m'en faire part parce
que


ça doit être évident mais je ne vois pas...
Merci pour votre aide

"Bauwens François" a écrit dans le message de
news:
Salut,

J'ai créé un formulaire sur lequel je place un bouton qui ouvre un
autre



formulaire grâce au code :

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG & "'"

Ca fonctionne si le champ 'fk_code_dg' est déjà rempli mais je pensais
que



normalement il écrirait la référence Me.CODE_DG si le champ est vide,
donc



si c'est un nouvel enregistrement mais non ! J'étais persuadé de
l'avoir



déjà fait mais bon...

Est-ce que j'oublie un truc ?

Merci
Frans











Avatar
Eric
Bonjour,

(Sous réserve de me tromper)
Dans le cas d'un formulaire avec sous-formulaire Oui mais pas dans le
cas où tu ouvres un autre formulaire avec la commande openForm suivi
d'une clause Where qui revient donc à filtrer les enregistrements du
2ème formulaire. S'il n'y en a pas, tu as une ligne vide à l'exception
du numauto.
Pour contourner le problème, tu peux passer, en argument d'ouverture du
2nd formulaire, le code.
DoCmd.OpenForm "fSubvention", , , "fk_Nom=" & Me.id_Nom, , , Me.id_Nom

Sur l'évènement Load (Chargement) du 2nd formulaire :
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then
If DCount("*", "tsubvention", "fk_Nom=" & Me.OpenArgs) = 0 Then
Me.fk_Nom = Me.OpenArgs
End If
End If
End Sub
(Remarque : je n'ai pas mis les 2 conditions sur une seule ligne dans le
cas où le 2nd formulaire fSubvention est appelable isolément)

Suivant comment est utilisé le 2nd formulaire (uniquement appelé par le
bouton et un seul ou plusieurs enregistrements à écrire), il faudra
adapter alors sur l'évènement Current (Activation) quelque chose de
similaire.

Merci pour ton aide.

Bon manifestement je ne suis pas clair. Je vais faire une longue et
exhaustive explication ne soit pas effrayé c'est simple et peut-être que le
problème te sautera au yeux (donc prudence quant-même)

Disons qu'il y a :
une table Nom avec 2 champs :
id_nom en numéroauto
nom en texte

une table Subvention avec 3 champs :
id_sub en numéroAuto
fk_nom en numérique
montant en numérique

Je lie, dans la fenêtre relation, le champ id_nom (un) au champ fk_nom
(plusieurs)

Je crée un formulaire sur base de la table nom et j'y ajoute un bouton qui
ouvre le formulaire que j'ai créé sur base de la table subvention.
Ce qui me chipotte c'est que le champ fk_nom ne se mette pas à jour tout
seul quand j'appuye sur mon bouton d'ouverture. Je suis donc obligé de
rentré "1" (par exemple pour le premier nom) sinon le lien ne se fera pas.

Il me semble que j'ai déjà réalisé ce type de liaison entre formulaire et
que le champ fk_nom peut se mettre à jour automatiquement en repiquant la
référence du champ id_nom, que ce ne soit pas nécessaire de le rentré à
chaque fois à la main. Mais peut-être que je me trompe. Il me semblait
qu'access gérait ça tout seul.

voilà, j'espère en tout cas avoir été plus clair.
Merci pour ton attention et ton aide
Frans


"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de
news:

Ton objectif est de lancer la création d'un nouvel enregistrement si ton


code

n'existe pas, c'est ça ?

Je ne suis pas persuadé que l'on puisse faire ça directement mais dans le
doute, essaie:

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG &
"'",acFormAdd


--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ





Un ch'tit coup de main siouplé !

J'ai créer une toute petite base de test pour voir si c'était différent.



Je

sais pas ou je bug !!! Mais je suis pratiquement certain que j'ai déjà



créé

un truc pareil où le lien se fait automatiquement sans devoir



l'introduire à

la main !!!! Mais peut-être que je l'ai rêvé.

Si vous avez une idée ou une remarques, merci de m'en faire part parce



que

ça doit être évident mais je ne vois pas...
Merci pour votre aide

"Bauwens François" a écrit dans le message de
news:

Salut,

J'ai créé un formulaire sur lequel je place un bouton qui ouvre un




autre

formulaire grâce au code :

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG & "'"

Ca fonctionne si le champ 'fk_code_dg' est déjà rempli mais je pensais




que

normalement il écrirait la référence Me.CODE_DG si le champ est vide,




donc

si c'est un nouvel enregistrement mais non ! J'étais persuadé de




l'avoir

déjà fait mais bon...

Est-ce que j'oublie un truc ?

Merci
Frans












--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Bauwens François
Merci pour ton aide, je n'y suis pas arrivé avec le code ;o(
Mais ce n'est pas grave, je suis reparti vers les sous-formulaire et ça
marche. Il est à noter qu'access lui-même avec l'assistant, s'il crée un
sous-formulaire attaché via un bouton, ne fait pas non plus le lien. Il faut
obligatoirement que le sous-formulaire soit présent dans le formulaire pour
que ça fonctionne.

Bonne journée et encore merci
frans


Bonjour,

(Sous réserve de me tromper)
Dans le cas d'un formulaire avec sous-formulaire Oui mais pas dans le
cas où tu ouvres un autre formulaire avec la commande openForm suivi
d'une clause Where qui revient donc à filtrer les enregistrements du
2ème formulaire. S'il n'y en a pas, tu as une ligne vide à l'exception
du numauto.
Pour contourner le problème, tu peux passer, en argument d'ouverture du
2nd formulaire, le code.
DoCmd.OpenForm "fSubvention", , , "fk_Nom=" & Me.id_Nom, , , Me.id_Nom

Sur l'évènement Load (Chargement) du 2nd formulaire :
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then
If DCount("*", "tsubvention", "fk_Nom=" & Me.OpenArgs) = 0 Then
Me.fk_Nom = Me.OpenArgs
End If
End If
End Sub
(Remarque : je n'ai pas mis les 2 conditions sur une seule ligne dans le
cas où le 2nd formulaire fSubvention est appelable isolément)

Suivant comment est utilisé le 2nd formulaire (uniquement appelé par le
bouton et un seul ou plusieurs enregistrements à écrire), il faudra
adapter alors sur l'évènement Current (Activation) quelque chose de
similaire.

Merci pour ton aide.

Bon manifestement je ne suis pas clair. Je vais faire une longue et
exhaustive explication ne soit pas effrayé c'est simple et peut-être que
le


problème te sautera au yeux (donc prudence quant-même)

Disons qu'il y a :
une table Nom avec 2 champs :
id_nom en numéroauto
nom en texte

une table Subvention avec 3 champs :
id_sub en numéroAuto
fk_nom en numérique
montant en numérique

Je lie, dans la fenêtre relation, le champ id_nom (un) au champ fk_nom
(plusieurs)

Je crée un formulaire sur base de la table nom et j'y ajoute un bouton
qui


ouvre le formulaire que j'ai créé sur base de la table subvention.
Ce qui me chipotte c'est que le champ fk_nom ne se mette pas à jour tout
seul quand j'appuye sur mon bouton d'ouverture. Je suis donc obligé de
rentré "1" (par exemple pour le premier nom) sinon le lien ne se fera
pas.



Il me semble que j'ai déjà réalisé ce type de liaison entre formulaire
et


que le champ fk_nom peut se mettre à jour automatiquement en repiquant
la


référence du champ id_nom, que ce ne soit pas nécessaire de le rentré à
chaque fois à la main. Mais peut-être que je me trompe. Il me semblait
qu'access gérait ça tout seul.

voilà, j'espère en tout cas avoir été plus clair.
Merci pour ton attention et ton aide
Frans


"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le
message de


news:

Ton objectif est de lancer la création d'un nouvel enregistrement si ton


code

n'existe pas, c'est ça ?

Je ne suis pas persuadé que l'on puisse faire ça directement mais dans
le



doute, essaie:

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG &
"'",acFormAdd


--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ





Un ch'tit coup de main siouplé !

J'ai créer une toute petite base de test pour voir si c'était
différent.





Je

sais pas ou je bug !!! Mais je suis pratiquement certain que j'ai déjà



créé

un truc pareil où le lien se fait automatiquement sans devoir



l'introduire à

la main !!!! Mais peut-être que je l'ai rêvé.

Si vous avez une idée ou une remarques, merci de m'en faire part parce



que

ça doit être évident mais je ne vois pas...
Merci pour votre aide

"Bauwens François" a écrit dans le message
de




news:

Salut,

J'ai créé un formulaire sur lequel je place un bouton qui ouvre un




autre

formulaire grâce au code :

DoCmd.OpenForm stDocName, , , "[fk_code_dg]=" & "'" & Me.CODE_DG & "'"

Ca fonctionne si le champ 'fk_code_dg' est déjà rempli mais je pensais




que

normalement il écrirait la référence Me.CODE_DG si le champ est vide,




donc

si c'est un nouvel enregistrement mais non ! J'étais persuadé de




l'avoir

déjà fait mais bon...

Est-ce que j'oublie un truc ?

Merci
Frans












--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr