Bonjour,
Voilà mon problème :
J’ai un formulaire «F Principal» construit à partir d’une table contenant le
champ [T1_Identifiant] en clé primaire
et un sous-formulaire « SF sousformulaire » construit à patir d’une seconde
table ayant pour clé principale les 2 champs [T2_Identifiant] et [T2_Num]
Les 2 tables sont reliées par une relation « un-plusieurs » entre
[T1_Identifiant] et [T2_ Identifiant].
Le sous-formulaire a pour champ fils [T2_ Identifiant] et pour champ père
[T1_ Identifiant].
Je n’ai pas voulu utiliser les numéros automatiques pour incrémenter : j’ai
inséré dans la propriété « Sur activation » de « F Principal » le code
ci-dessous que j’ai trouvé dans le newsgroup, donné par 3stone :
Private Sub Form_Current()
If Me.NewRecord Then
Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
End If
End Sub
J’ai voulu faire la même chose dans le sous formulaire pour incrémenter
automatiquement [T2_Num] mais, plaçant le code équivalant dans l’événement «
Sur activation » de « SF sousformulaire », le stylet indiquant une saisie en
cours se place tout de suite dans le sous formulaire et un message d’erreur
m’avertit que le champ [T2_Identifiant] ne peut contenir la valeur null.
J’ai bidouillé toute la journée pour placer le code sur un autre événement
du sous formulaire mais force est d’admettre que je ne connais rien au VB… Je
ne sais pas dans quel événement placé le code ou alors je ne sais pas faire
référence aux contrôles en VB.
Comment permettre l’incrémentation automatique de [T2_Num] du sous
formulaire et celle de [T1_Identifiant] du formulaire, sans utiliser les
numauto ?
En vous remerciant sincérement pour l’aide que vous pourrez m’apporter,
avant de me jeter contre les murs…
Christophe
Bonjour,
Voilà mon problème :
J’ai un formulaire «F Principal» construit à partir d’une table contenant le
champ [T1_Identifiant] en clé primaire
et un sous-formulaire « SF sousformulaire » construit à patir d’une seconde
table ayant pour clé principale les 2 champs [T2_Identifiant] et [T2_Num]
Les 2 tables sont reliées par une relation « un-plusieurs » entre
[T1_Identifiant] et [T2_ Identifiant].
Le sous-formulaire a pour champ fils [T2_ Identifiant] et pour champ père
[T1_ Identifiant].
Je n’ai pas voulu utiliser les numéros automatiques pour incrémenter : j’ai
inséré dans la propriété « Sur activation » de « F Principal » le code
ci-dessous que j’ai trouvé dans le newsgroup, donné par 3stone :
Private Sub Form_Current()
If Me.NewRecord Then
Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
End If
End Sub
J’ai voulu faire la même chose dans le sous formulaire pour incrémenter
automatiquement [T2_Num] mais, plaçant le code équivalant dans l’événement «
Sur activation » de « SF sousformulaire », le stylet indiquant une saisie en
cours se place tout de suite dans le sous formulaire et un message d’erreur
m’avertit que le champ [T2_Identifiant] ne peut contenir la valeur null.
J’ai bidouillé toute la journée pour placer le code sur un autre événement
du sous formulaire mais force est d’admettre que je ne connais rien au VB… Je
ne sais pas dans quel événement placé le code ou alors je ne sais pas faire
référence aux contrôles en VB.
Comment permettre l’incrémentation automatique de [T2_Num] du sous
formulaire et celle de [T1_Identifiant] du formulaire, sans utiliser les
numauto ?
En vous remerciant sincérement pour l’aide que vous pourrez m’apporter,
avant de me jeter contre les murs…
Christophe
Bonjour,
Voilà mon problème :
J’ai un formulaire «F Principal» construit à partir d’une table contenant le
champ [T1_Identifiant] en clé primaire
et un sous-formulaire « SF sousformulaire » construit à patir d’une seconde
table ayant pour clé principale les 2 champs [T2_Identifiant] et [T2_Num]
Les 2 tables sont reliées par une relation « un-plusieurs » entre
[T1_Identifiant] et [T2_ Identifiant].
Le sous-formulaire a pour champ fils [T2_ Identifiant] et pour champ père
[T1_ Identifiant].
Je n’ai pas voulu utiliser les numéros automatiques pour incrémenter : j’ai
inséré dans la propriété « Sur activation » de « F Principal » le code
ci-dessous que j’ai trouvé dans le newsgroup, donné par 3stone :
Private Sub Form_Current()
If Me.NewRecord Then
Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
End If
End Sub
J’ai voulu faire la même chose dans le sous formulaire pour incrémenter
automatiquement [T2_Num] mais, plaçant le code équivalant dans l’événement «
Sur activation » de « SF sousformulaire », le stylet indiquant une saisie en
cours se place tout de suite dans le sous formulaire et un message d’erreur
m’avertit que le champ [T2_Identifiant] ne peut contenir la valeur null.
J’ai bidouillé toute la journée pour placer le code sur un autre événement
du sous formulaire mais force est d’admettre que je ne connais rien au VB… Je
ne sais pas dans quel événement placé le code ou alors je ne sais pas faire
référence aux contrôles en VB.
Comment permettre l’incrémentation automatique de [T2_Num] du sous
formulaire et celle de [T1_Identifiant] du formulaire, sans utiliser les
numauto ?
En vous remerciant sincérement pour l’aide que vous pourrez m’apporter,
avant de me jeter contre les murs…
Christophe
Salut,
"Christophe"
| Je suis sous Access 2003 et débutant pour le VBA. J'ai mis dans la propriété
| SurActivation d'un sous-formulaire le code
|
| Private Sub Form_Current()
| If Me.NewRecord Then
| Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
| End If
| End Sub
|
| Lorsque j'ouvre le formulaire principal, l'enregistrement est déjà en cours
| dans le sous-formilaire et j'obtiens un message d'erreur m'indiquant que le
| "champ fils" correspondant à la clef primaire ne peut contenir de valeur
| null...
| Comment empécher que l'enregistrement soit "activé" dans le sous-formulaire,
| lorsque l'on ouvre le formulaire principal ou que l'on créé un nouvel
| enregistrement dans le formulaire principal, c'est-à-dire avant même d'avoir
| cliqué dans un champ du sous-formulaire ?
Il n'est pas toujours bon de sortir quelques lignes de code hors de leur contexte...
Mais, aurais-tu mis la propriété "Entrée données" à oui ??
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
"Christophe"
| Je suis sous Access 2003 et débutant pour le VBA. J'ai mis dans la propriété
| SurActivation d'un sous-formulaire le code
|
| Private Sub Form_Current()
| If Me.NewRecord Then
| Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
| End If
| End Sub
|
| Lorsque j'ouvre le formulaire principal, l'enregistrement est déjà en cours
| dans le sous-formilaire et j'obtiens un message d'erreur m'indiquant que le
| "champ fils" correspondant à la clef primaire ne peut contenir de valeur
| null...
| Comment empécher que l'enregistrement soit "activé" dans le sous-formulaire,
| lorsque l'on ouvre le formulaire principal ou que l'on créé un nouvel
| enregistrement dans le formulaire principal, c'est-à-dire avant même d'avoir
| cliqué dans un champ du sous-formulaire ?
Il n'est pas toujours bon de sortir quelques lignes de code hors de leur contexte...
Mais, aurais-tu mis la propriété "Entrée données" à oui ??
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
"Christophe"
| Je suis sous Access 2003 et débutant pour le VBA. J'ai mis dans la propriété
| SurActivation d'un sous-formulaire le code
|
| Private Sub Form_Current()
| If Me.NewRecord Then
| Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
| End If
| End Sub
|
| Lorsque j'ouvre le formulaire principal, l'enregistrement est déjà en cours
| dans le sous-formilaire et j'obtiens un message d'erreur m'indiquant que le
| "champ fils" correspondant à la clef primaire ne peut contenir de valeur
| null...
| Comment empécher que l'enregistrement soit "activé" dans le sous-formulaire,
| lorsque l'on ouvre le formulaire principal ou que l'on créé un nouvel
| enregistrement dans le formulaire principal, c'est-à-dire avant même d'avoir
| cliqué dans un champ du sous-formulaire ?
Il n'est pas toujours bon de sortir quelques lignes de code hors de leur contexte...
Mais, aurais-tu mis la propriété "Entrée données" à oui ??
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
"Christophe"
| Merci 3stone pour ta réponse. Malheureusement, ce n'est pas ça :
| La propriété "Entrée données" n'est pas à oui.
| As-tu une autre idée ? Ne pourrait-on pas mettre le code pour
| l'incrémentation automatique dans une propriété ?
| > | Private Sub Form_Current()
| > | If Me.NewRecord Then
| > | Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
| > | End If
| > | End Sub
Avec l'exemple, il ne te calcule un T1_Identifiant QUE si tu est
dans un nouvel enregistrement...
Ce n'est donc pas lui qui le déclenche !
Tu dois chercher ailleurs... tu as un autre code quelque part ?
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
"Christophe"
| Merci 3stone pour ta réponse. Malheureusement, ce n'est pas ça :
| La propriété "Entrée données" n'est pas à oui.
| As-tu une autre idée ? Ne pourrait-on pas mettre le code pour
| l'incrémentation automatique dans une propriété ?
| > | Private Sub Form_Current()
| > | If Me.NewRecord Then
| > | Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
| > | End If
| > | End Sub
Avec l'exemple, il ne te calcule un T1_Identifiant QUE si tu est
dans un nouvel enregistrement...
Ce n'est donc pas lui qui le déclenche !
Tu dois chercher ailleurs... tu as un autre code quelque part ?
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
"Christophe"
| Merci 3stone pour ta réponse. Malheureusement, ce n'est pas ça :
| La propriété "Entrée données" n'est pas à oui.
| As-tu une autre idée ? Ne pourrait-on pas mettre le code pour
| l'incrémentation automatique dans une propriété ?
| > | Private Sub Form_Current()
| > | If Me.NewRecord Then
| > | Me. T1_ Identifiant = Nz(DMax("[T1_ Identifiant]", "T1"), 0) + 1
| > | End If
| > | End Sub
Avec l'exemple, il ne te calcule un T1_Identifiant QUE si tu est
dans un nouvel enregistrement...
Ce n'est donc pas lui qui le déclenche !
Tu dois chercher ailleurs... tu as un autre code quelque part ?
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
Si je comprends bien... (pas sûr ;)
Dans ta table principale, ta numérotation des enregistrements sont:
1, 2, 3, 4, 5, 6....
dans ta table secondaire, la clé externe qui sera identique et un second
champ qui doit repartir à 1 à chaque incrémentation de la clé externe
1 - 1, 1 - 2, 1 - 3, 1 - 4 ....
2 - 1, 2 - 2, 2 - 3 ...
c'est ca ?
dans ce cas, tu peux numéroter ton second champ en vérifiant les
enregistrements qui correspondent à la clé externe:
If Me.Newrecord Then
'sur une ligne...
SecondChamp > Nz(DMax("ChampSecondaire","Tablesecondaire","CleExt="
& Me.Parent.ClePrimaire),0)+1
End if
PS:
Dans "Me.Parent.ClePrimaire" tu dois remplacer "CléPrimaire"
par le nom de la clé primaire du formulaire principal.
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
Si je comprends bien... (pas sûr ;)
Dans ta table principale, ta numérotation des enregistrements sont:
1, 2, 3, 4, 5, 6....
dans ta table secondaire, la clé externe qui sera identique et un second
champ qui doit repartir à 1 à chaque incrémentation de la clé externe
1 - 1, 1 - 2, 1 - 3, 1 - 4 ....
2 - 1, 2 - 2, 2 - 3 ...
c'est ca ?
dans ce cas, tu peux numéroter ton second champ en vérifiant les
enregistrements qui correspondent à la clé externe:
If Me.Newrecord Then
'sur une ligne...
SecondChamp > Nz(DMax("ChampSecondaire","Tablesecondaire","CleExt="
& Me.Parent.ClePrimaire),0)+1
End if
PS:
Dans "Me.Parent.ClePrimaire" tu dois remplacer "CléPrimaire"
par le nom de la clé primaire du formulaire principal.
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Salut,
Si je comprends bien... (pas sûr ;)
Dans ta table principale, ta numérotation des enregistrements sont:
1, 2, 3, 4, 5, 6....
dans ta table secondaire, la clé externe qui sera identique et un second
champ qui doit repartir à 1 à chaque incrémentation de la clé externe
1 - 1, 1 - 2, 1 - 3, 1 - 4 ....
2 - 1, 2 - 2, 2 - 3 ...
c'est ca ?
dans ce cas, tu peux numéroter ton second champ en vérifiant les
enregistrements qui correspondent à la clé externe:
If Me.Newrecord Then
'sur une ligne...
SecondChamp > Nz(DMax("ChampSecondaire","Tablesecondaire","CleExt="
& Me.Parent.ClePrimaire),0)+1
End if
PS:
Dans "Me.Parent.ClePrimaire" tu dois remplacer "CléPrimaire"
par le nom de la clé primaire du formulaire principal.
--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw