Bonjour,
J'ai une requéte ajout a introduire dans du VBA, ne sachant pas ecrire en
SQL
d'habitude je fais la requéte classique puis, en copie le code SQL dans une
macro "executer SQL' et enfin
j'enregistre la macro en "module" qui me génére le code correspondant.
DoCmd.RunSQL bla bla bla
Cela marche très bien.
Cette fois le code SQL de la requéte est trop long pour une macro, je ne
peux donc pas générer le code et ne sais pas l'écrire en direct.
INSERT INTO TEMP ( maxi )
SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence
FROM Année_Adherent
GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure
HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison]) AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));
Si l'un d'entre vous pouvais ce pencher dessus.
D'avance merci
Michel
Bonjour,
J'ai une requéte ajout a introduire dans du VBA, ne sachant pas ecrire en
SQL
d'habitude je fais la requéte classique puis, en copie le code SQL dans une
macro "executer SQL' et enfin
j'enregistre la macro en "module" qui me génére le code correspondant.
DoCmd.RunSQL bla bla bla
Cela marche très bien.
Cette fois le code SQL de la requéte est trop long pour une macro, je ne
peux donc pas générer le code et ne sais pas l'écrire en direct.
INSERT INTO TEMP ( maxi )
SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence
FROM Année_Adherent
GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure
HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison]) AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));
Si l'un d'entre vous pouvais ce pencher dessus.
D'avance merci
Michel
Bonjour,
J'ai une requéte ajout a introduire dans du VBA, ne sachant pas ecrire en
SQL
d'habitude je fais la requéte classique puis, en copie le code SQL dans une
macro "executer SQL' et enfin
j'enregistre la macro en "module" qui me génére le code correspondant.
DoCmd.RunSQL bla bla bla
Cela marche très bien.
Cette fois le code SQL de la requéte est trop long pour une macro, je ne
peux donc pas générer le code et ne sais pas l'écrire en direct.
INSERT INTO TEMP ( maxi )
SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence
FROM Année_Adherent
GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure
HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison]) AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));
Si l'un d'entre vous pouvais ce pencher dessus.
D'avance merci
Michel
Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" a écrit dans le message de news:Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" <UrbaniakFabienxxxx@Neuf.fr> a écrit dans le message de news:
OwrbxSH0IHA.4912@TK2MSFTNGP03.phx.gbl...
Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" a écrit dans le message de news:Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" a écrit dans le message de news:Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" <UrbaniakFabienxxxx@Neuf.fr> a écrit dans le message de news:
OwrbxSH0IHA.4912@TK2MSFTNGP03.phx.gbl...
Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" a écrit dans le message de news:Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Ca marche,
Je l'ai fais passer par une table intermédiaire et cela fonctionne impec.
Encore merci pour l'aide
Cordialement
Michel
PS : le code définitif
------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
DoCmd.RunSQL "SELECT Format([number1],""0000"") AS [Number], [Maxi]+1 AS
Number1 INTO TEMP1 FROM TEMP; ", -1
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("Number", "temp1")
Else
'attribution d'un numéro de licence par défaut
Lic.Value = "0001"
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
DoCmd.RunSQL "DELETE * FROM TEMP1"
Resume Next
End If
End Sub
"Michel B" a écrit dans le message de news:
4857beac$0$6059$Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" a écrit dans le message de news:Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Ca marche,
Je l'ai fais passer par une table intermédiaire et cela fonctionne impec.
Encore merci pour l'aide
Cordialement
Michel
PS : le code définitif
------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
DoCmd.RunSQL "SELECT Format([number1],""0000"") AS [Number], [Maxi]+1 AS
Number1 INTO TEMP1 FROM TEMP; ", -1
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("Number", "temp1")
Else
'attribution d'un numéro de licence par défaut
Lic.Value = "0001"
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
DoCmd.RunSQL "DELETE * FROM TEMP1"
Resume Next
End If
End Sub
"Michel B" <michel_b@libertysurf.fr> a écrit dans le message de news:
4857beac$0$6059$426a74cc@news.free.fr...
Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" <UrbaniakFabienxxxx@Neuf.fr> a écrit dans le message de news:
OwrbxSH0IHA.4912@TK2MSFTNGP03.phx.gbl...
Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)
Ca marche,
Je l'ai fais passer par une table intermédiaire et cela fonctionne impec.
Encore merci pour l'aide
Cordialement
Michel
PS : le code définitif
------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
DoCmd.RunSQL "SELECT Format([number1],""0000"") AS [Number], [Maxi]+1 AS
Number1 INTO TEMP1 FROM TEMP; ", -1
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("Number", "temp1")
Else
'attribution d'un numéro de licence par défaut
Lic.Value = "0001"
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
DoCmd.RunSQL "DELETE * FROM TEMP1"
Resume Next
End If
End Sub
"Michel B" a écrit dans le message de news:
4857beac$0$6059$Bonjour Fabien
et marci pour le coup de main.
Cela fonctionne, mais ......
Le numéro renvoyé aprés le 0015 est le 16 et il me le faut sur 4 chiffres
0015, 0016, 0017 etc.
J'ai remplacé ([maxi] LONG) par ([maxi] String) cela n'a rien changé.
que doit t'on modifier dans la code pour cela ?
Il faut que je te dise que le code résultant est une adaptation d'une
récupération.
Encore merci
-------------------------------------
Private Sub Actif_AfterUpdate()
On Error GoTo err_Actif_AfterUpdate
If Actif.Value And IsNull(Lic.Value) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE TEMP ([maxi] LONG)"
DoCmd.RunSQL "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING (((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
If Not IsNull(DLookup("maxi", "temp")) Then
'attribution d'un numéro d'Attestation par incrémentation
Lic.Value = DLookup("maxi", "temp") + 1
Else
'attribution d'un numéro de licence par défaut
Lic.Value = 1
End If
DoCmd.RunSQL " DROP TABLE TEMP"
DoCmd.SetWarnings True
Else
'rien
End If
Exit Sub
err_Actif_AfterUpdate:
If Err = 3376 Then
Resume Next
ElseIf Err = 3010 Then
DoCmd.RunSQL "DELETE * FROM TEMP"
Resume Next
End If
End Sub
"Fabien" a écrit dans le message de news:Salut
Passe directement dans le module Vba et ecris ta Sub
Sub Masub()
Docmd.runsql "INSERT INTO TEMP ( maxi ) " & _
"SELECT Max(Année_Adherent.N°Licence) AS MaxDeN°Licence " & _
"FROM Année_Adherent " & _
"GROUP BY Année_Adherent.Saison, Année_Adherent.N°Structure " & _
"HAVING ((Année_Adherent.Saison)=[Formulaires]![Accueil]![Saison])
AND
((Année_Adherent.N°Structure)=[Formulaires]![Structures]![Sous_AdherentsActif].[Form]![N°Structure]));"
end Sub
et voilà ;-)