pb de code pour ajouter condition dans requête ajout
12 réponses
Gundt
bonjour à tous,
Je viens de découvrir un bug dans mon appli de facturation que je
croyais avoir terminé.
Voici ce qui se passe :
A la création des factures, le 1er mois : tout s'est bien passé. Le
programme a créé les factures de mars début avril. Les factures de mars
sont exactes.
Celles d'avril : le programme crée les factures d'avril avec l'en-tête
et les lignes de factures (je passe les détails). Celles-ci sont bonnes
en avril mais par contre, en même temps le code ajoute les lignes
factures d'Avril dans les lignes factures de mars pour chaque client qui
a eu une facture en mars.
Je pense que la requête ne doit simplement ajouter les lignes factures
que pour le mois sélectionné, l'année sélectionnée ou par le numéro de
facture.
Comment corriger cela en sachant que la création de la facture est créée
par le code et la création des lignes de facture par une requête ajout
dans ce même code ?
Je vous joins à la fin du mail le code et la requête sql.
J'ai essayé d'ajouter à la requête ajout cette ligne en récupérant le
numéro de facture de la variable :
& "WHERE [FACTURES].Numfacture = & nouvnum & ;"
Mais cela ne change rien.
Ci-dessous les codes et la requête ajout avant la modif que j'ai essayé.
J'espère que mon mail sera suffisamment clair malgré la longueur.
Merci d'avance.
Gundt
--------------------------------------------
voici le code de la création de facture :
--------------------------------------------
' procédure de création de numéro automatique de facture
Dim db As Database
Dim r As Recordset, s As Recordset, f As Form
Dim suivnum1 As String, suivnum2 As String, suivnum As String, nouvnum
As String
Dim numero As Long
Dim codecli1 As Long
' codecli2 As Long
Dim mm As Byte
Dim yyyy As Long
Dim sql1 As String
Set r = db.OpenRecordset(sql1, DB_OPEN_DYNASET)
Set s = db.OpenRecordset("Factures", DB_OPEN_DYNASET)
' formulaire pour choix de facture
Set f = Forms![Choix_cli_fact_perso]
' On ajoute la lettre A au numéro de facture pour indiquer que les
factures appartiennent à l'Atelier
' numérotation avec A
If Not s.EOF Then s.MoveLast
suivnum1 = "A"
numero = 1
If s.BOF Then
nouvnum = fNouveauNum(suivnum1)
Else
s.MoveLast
suivnum = s!Numfacture
If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois Then
nouvnum = suivnum1 & Mid(suivnum, 2, 6) _
& Format(Val(Mid(suivnum, 8, 3)) + 1, "000")
numero = Val(Mid(nouvnum, 8, 3))
Else
nouvnum = fNouveauNum(suivnum1)
End If
End If
f!test = nouvnum
If Not r.BOF Then r.MoveFirst
codecli1 = r!CodeClient
On Error Resume Next
Do While Not r.EOF
If Format(r!DateSortie_temp, "yyyymm") = Format(f!Année, "0000") &
Format(f!Mois, "00") Then
If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois Then nouvnum = suivnum1 & Mid(suivnum, 2, 6) _ & Format(Val(Mid(suivnum, 8, 3)) + 1, "000") numero = Val(Mid(nouvnum, 8, 3)) Else nouvnum = fNouveauNumero(suivnum1) End If End If
je remplacerais numero = Val(Mid(nouvnum, 8, 3)) par numero = Val(Mid(nouvnum, 8, 3)) + 1
résultat non garanti.
Oui, malheureusement, cela fait pareil. :-(
J'ai donc remis comme avant.
Une chose m'étonne quand même : s'il y a un écart de 1 entre la variable et le numfacture, il devrait y avoir environ n-1 lignes factures créées. Mais là, il n'y a zéro lignes factures créées!!
Merci encore à Raymond de sa patience.
Gundt
dans cette portion je trouve bizarre:
If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois Then
nouvnum = suivnum1 & Mid(suivnum, 2, 6) _
& Format(Val(Mid(suivnum, 8, 3)) + 1, "000")
numero = Val(Mid(nouvnum, 8, 3))
Else
nouvnum = fNouveauNumero(suivnum1)
End If
End If
je remplacerais numero = Val(Mid(nouvnum, 8, 3)) par
numero = Val(Mid(nouvnum, 8, 3)) + 1
résultat non garanti.
Oui, malheureusement, cela fait pareil. :-(
J'ai donc remis comme avant.
Une chose m'étonne quand même : s'il y a un écart de 1 entre la variable
et le numfacture, il devrait y avoir environ n-1 lignes factures créées.
Mais là, il n'y a zéro lignes factures créées!!
If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois Then nouvnum = suivnum1 & Mid(suivnum, 2, 6) _ & Format(Val(Mid(suivnum, 8, 3)) + 1, "000") numero = Val(Mid(nouvnum, 8, 3)) Else nouvnum = fNouveauNumero(suivnum1) End If End If
je remplacerais numero = Val(Mid(nouvnum, 8, 3)) par numero = Val(Mid(nouvnum, 8, 3)) + 1
résultat non garanti.
Oui, malheureusement, cela fait pareil. :-(
J'ai donc remis comme avant.
Une chose m'étonne quand même : s'il y a un écart de 1 entre la variable et le numfacture, il devrait y avoir environ n-1 lignes factures créées. Mais là, il n'y a zéro lignes factures créées!!
Merci encore à Raymond de sa patience.
Gundt
Raymond [mvp]
Je veux bien jeter un oeil sur cette procédure. envoie-moi les objets en cause dans mon e-mail (enlève les xyz de sécurité). je te rappellerai demain.
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/ Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité ! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"Gundt" a écrit dans le message de news: 4659de3e$0$14981$ | > dans cette portion je trouve bizarre: | > | > If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois Then | > nouvnum = suivnum1 & Mid(suivnum, 2, 6) _ | > & Format(Val(Mid(suivnum, 8, 3)) + 1, "000") | > numero = Val(Mid(nouvnum, 8, 3)) | > Else | > nouvnum = fNouveauNumero(suivnum1) | > End If | > End If | > | > je remplacerais numero = Val(Mid(nouvnum, 8, 3)) par | > numero = Val(Mid(nouvnum, 8, 3)) + 1 | > | > résultat non garanti. | | Oui, malheureusement, cela fait pareil. :-( | | J'ai donc remis comme avant. | | Une chose m'étonne quand même : s'il y a un écart de 1 entre la variable | et le numfacture, il devrait y avoir environ n-1 lignes factures créées. | Mais là, il n'y a zéro lignes factures créées!! | | Merci encore à Raymond de sa patience. | | Gundt
Je veux bien jeter un oeil sur cette procédure. envoie-moi les objets en
cause dans mon e-mail (enlève les xyz de sécurité). je te rappellerai
demain.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"Gundt" <e.trolle@laposte.net> a écrit dans le message de news:
4659de3e$0$14981$426a74cc@news.free.fr...
| > dans cette portion je trouve bizarre:
| >
| > If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois
Then
| > nouvnum = suivnum1 & Mid(suivnum, 2, 6) _
| > & Format(Val(Mid(suivnum, 8, 3)) + 1, "000")
| > numero = Val(Mid(nouvnum, 8, 3))
| > Else
| > nouvnum = fNouveauNumero(suivnum1)
| > End If
| > End If
| >
| > je remplacerais numero = Val(Mid(nouvnum, 8, 3)) par
| > numero = Val(Mid(nouvnum, 8, 3)) + 1
| >
| > résultat non garanti.
|
| Oui, malheureusement, cela fait pareil. :-(
|
| J'ai donc remis comme avant.
|
| Une chose m'étonne quand même : s'il y a un écart de 1 entre la variable
| et le numfacture, il devrait y avoir environ n-1 lignes factures créées.
| Mais là, il n'y a zéro lignes factures créées!!
|
| Merci encore à Raymond de sa patience.
|
| Gundt
Je veux bien jeter un oeil sur cette procédure. envoie-moi les objets en cause dans mon e-mail (enlève les xyz de sécurité). je te rappellerai demain.
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/ Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité ! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"Gundt" a écrit dans le message de news: 4659de3e$0$14981$ | > dans cette portion je trouve bizarre: | > | > If Mid(suivnum, 2, 4) = f!Année And Mid(suivnum, 6, 2) = f!Mois Then | > nouvnum = suivnum1 & Mid(suivnum, 2, 6) _ | > & Format(Val(Mid(suivnum, 8, 3)) + 1, "000") | > numero = Val(Mid(nouvnum, 8, 3)) | > Else | > nouvnum = fNouveauNumero(suivnum1) | > End If | > End If | > | > je remplacerais numero = Val(Mid(nouvnum, 8, 3)) par | > numero = Val(Mid(nouvnum, 8, 3)) + 1 | > | > résultat non garanti. | | Oui, malheureusement, cela fait pareil. :-( | | J'ai donc remis comme avant. | | Une chose m'étonne quand même : s'il y a un écart de 1 entre la variable | et le numfacture, il devrait y avoir environ n-1 lignes factures créées. | Mais là, il n'y a zéro lignes factures créées!! | | Merci encore à Raymond de sa patience. | | Gundt