Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.1ca17d843d9b89a2.51093@wanad.padspam.fr...
Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
fhgc@wanadoudou.fr
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonjour.
Il semblerait que tu modifies tes enregistrements et non que tu les crées.
est-ce ceci ? ou est-ce que tu dois créer deux nouveaux enregistrements ?
quelle est ta procédure théorique exact pour traiter cette écriture ?
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Raymond [mvp] a formulé la demande :Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir Raymond,
Merci pour ta réponse, qui ne me dépanne malheureusement pas.
Je suis un peu apprenti sorcier dans ma démarche car, bien que ne
connaissant vraiment pas grand chose vis à vis d'Access, je tente
d'adapter une procédure qui marche bien en création, et dont je ne suis
pas du tout l'auteur, pour en faire une procédure de modification, qui
me serait bien utile.
Avec les opérations de débit ou de crédit, ça a bien marché, car il n'y
a qu'un enregistrement dans la table des opérations pour chaque
opération de ce type. Avec les virements, il y a 2 enregistrements qui
sont créés dans cette table. Pour les modifications, il y a donc deux
enregistrements, qui se suivent dans la table, à mettre à jour. Après
avoir fait la modif sur la première, il faut passer à la suivante pour
être complet dans les modifs, et c'est ce passage qui ne se fait pas.
J'ai remplacé GoToNext par GoToNew, comme tu le suggères, mais ça
génère le même message qu'avec Next.
Voilà, si tu peux m'en dire un peu plus, merci beaucoup,
Francis
--
Francis
LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.
Bonjour.
Il semblerait que tu modifies tes enregistrements et non que tu les crées.
est-ce ceci ? ou est-ce que tu dois créer deux nouveaux enregistrements ?
quelle est ta procédure théorique exact pour traiter cette écriture ?
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.1ce87d844de9c2c3.51093@wanad.padspam.fr...
Raymond [mvp] a formulé la demande :
Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.1ca17d843d9b89a2.51093@wanad.padspam.fr...
Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
fhgc@wanadoudou.fr
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir Raymond,
Merci pour ta réponse, qui ne me dépanne malheureusement pas.
Je suis un peu apprenti sorcier dans ma démarche car, bien que ne
connaissant vraiment pas grand chose vis à vis d'Access, je tente
d'adapter une procédure qui marche bien en création, et dont je ne suis
pas du tout l'auteur, pour en faire une procédure de modification, qui
me serait bien utile.
Avec les opérations de débit ou de crédit, ça a bien marché, car il n'y
a qu'un enregistrement dans la table des opérations pour chaque
opération de ce type. Avec les virements, il y a 2 enregistrements qui
sont créés dans cette table. Pour les modifications, il y a donc deux
enregistrements, qui se suivent dans la table, à mettre à jour. Après
avoir fait la modif sur la première, il faut passer à la suivante pour
être complet dans les modifs, et c'est ce passage qui ne se fait pas.
J'ai remplacé GoToNext par GoToNew, comme tu le suggères, mais ça
génère le même message qu'avec Next.
Voilà, si tu peux m'en dire un peu plus, merci beaucoup,
Francis
--
Francis
fhgc@wanadoudou.fr
LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.
Bonjour.
Il semblerait que tu modifies tes enregistrements et non que tu les crées.
est-ce ceci ? ou est-ce que tu dois créer deux nouveaux enregistrements ?
quelle est ta procédure théorique exact pour traiter cette écriture ?
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Raymond [mvp] a formulé la demande :Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir Raymond,
Merci pour ta réponse, qui ne me dépanne malheureusement pas.
Je suis un peu apprenti sorcier dans ma démarche car, bien que ne
connaissant vraiment pas grand chose vis à vis d'Access, je tente
d'adapter une procédure qui marche bien en création, et dont je ne suis
pas du tout l'auteur, pour en faire une procédure de modification, qui
me serait bien utile.
Avec les opérations de débit ou de crédit, ça a bien marché, car il n'y
a qu'un enregistrement dans la table des opérations pour chaque
opération de ce type. Avec les virements, il y a 2 enregistrements qui
sont créés dans cette table. Pour les modifications, il y a donc deux
enregistrements, qui se suivent dans la table, à mettre à jour. Après
avoir fait la modif sur la première, il faut passer à la suivante pour
être complet dans les modifs, et c'est ce passage qui ne se fait pas.
J'ai remplacé GoToNext par GoToNew, comme tu le suggères, mais ça
génère le même message qu'avec Next.
Voilà, si tu peux m'en dire un peu plus, merci beaucoup,
Francis
--
Francis
LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.
Bonjour.
si tu travailles en multi-utilisateur, ta méthode de création n'est pas
fiable car tu risques d'avoir des doublons dans le Me!N°_écriture et tu ne
pourras jamais atteindre la 2e écriture par ta méthode. chaque écriture doit
avoir son numéro, généré immédiatement avant sa création et les numéros
d'écritues mémorisés dans les deux écritures pour pouvoir faire la
correspondance.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir Raymond,
C'est bien ça, je voudrais pouvoir modifier deux enregistrements de ma
table des opérations comptables, qui résultent en fait d'une seule
opération de virement d'un compte à un autre. Leur création initiale se
fait sans problème, et j'ai naivement cru que je pourrais transposer la
procédure de création pour en faire une procédure de modification, mais
voilà, ça coince.
Les deux enregistrements on des numéros d'ordre qui se suivent dans la
table. Quand je demande une modif du virement correspondant, je suis
capable de savoir si c'est le premier ou le second des enregistrements,
et de me positionner sur le premier. Voici ce que je fais:
If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Le formulaire SF virement est celui qui a été initialement conçu pour
la création de l'opération de virement, et dont je te donne le code
ci-après:
Private Sub Valider_Click()
On Error GoTo Err_Valider_Click
If Me!numéro = 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
valeur = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
If Right(Year(date), 2) * 10000 > valeur Then
valeur = Right(Year(date), 1) * 10000
If valeur = 0 Then valeur = 10000
End If
valeur = valeur + 1
val2 = valeur + 1
Me!numéro = valeur
Me!N°_écriture = "E" & Right(Year(date), 1) & Right(valeur, 4)
montant = Me!sortie
tiers = Form!compte.Column(2)
If Not IsNull(Me!ref_pièce) Then pièce = Me!ref_pièce
If Not IsNull(Me!notes) Then notes = Me!notes
entrée = 0
solde = -montant
libellé = "Virement vers compte"
Me!ref_tiers = Form!compte2.Column(2)
' If Not IsNull(notes) Then Me!notes = notes
Me!type = "V"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNew
Me!numéro = val2
Me!N°_écriture = "E" & Right(Year(date), 1) & Right(val2, 4)
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_tiers = tiers
If Not IsNull(pièce) Then Me!ref_pièce = pièce
If Not IsNull(notes) Then Me!notes = notes
Me!type = "V"
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
DoCmd.Close
Exit_Valider_Click:
Exit Sub
Err_Valider_Click:
MsgBox Err.Description
Resume Exit_Valider_Click
End Sub
Voilà, j'espère que j'ai été assez clair dans mes propos et que tu
pourras me donner le coup de main qui me serait bien utile.
@plus
Francis
Raymond [mvp] a utilisé son clavier pour écrire :Bonjour.
Il semblerait que tu modifies tes enregistrements et non que tu les crées.
est-ce ceci ? ou est-ce que tu dois créer deux nouveaux enregistrements ?
quelle est ta procédure théorique exact pour traiter cette écriture ?
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Raymond [mvp] a formulé la demande :Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir Raymond,
Merci pour ta réponse, qui ne me dépanne malheureusement pas.
Je suis un peu apprenti sorcier dans ma démarche car, bien que ne
connaissant vraiment pas grand chose vis à vis d'Access, je tente
d'adapter une procédure qui marche bien en création, et dont je ne suis
pas du tout l'auteur, pour en faire une procédure de modification, qui
me serait bien utile.
Avec les opérations de débit ou de crédit, ça a bien marché, car il n'y
a qu'un enregistrement dans la table des opérations pour chaque
opération de ce type. Avec les virements, il y a 2 enregistrements qui
sont créés dans cette table. Pour les modifications, il y a donc deux
enregistrements, qui se suivent dans la table, à mettre à jour. Après
avoir fait la modif sur la première, il faut passer à la suivante pour
être complet dans les modifs, et c'est ce passage qui ne se fait pas.
J'ai remplacé GoToNext par GoToNew, comme tu le suggères, mais ça
génère le même message qu'avec Next.
Voilà, si tu peux m'en dire un peu plus, merci beaucoup,
Francis
--
Francis
LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.
--
Francis
LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.
Bonjour.
si tu travailles en multi-utilisateur, ta méthode de création n'est pas
fiable car tu risques d'avoir des doublons dans le Me!N°_écriture et tu ne
pourras jamais atteindre la 2e écriture par ta méthode. chaque écriture doit
avoir son numéro, généré immédiatement avant sa création et les numéros
d'écritues mémorisés dans les deux écritures pour pouvoir faire la
correspondance.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.24cf7d84a91a829d.51093@wanad.padspam.fr...
Bonsoir Raymond,
C'est bien ça, je voudrais pouvoir modifier deux enregistrements de ma
table des opérations comptables, qui résultent en fait d'une seule
opération de virement d'un compte à un autre. Leur création initiale se
fait sans problème, et j'ai naivement cru que je pourrais transposer la
procédure de création pour en faire une procédure de modification, mais
voilà, ça coince.
Les deux enregistrements on des numéros d'ordre qui se suivent dans la
table. Quand je demande une modif du virement correspondant, je suis
capable de savoir si c'est le premier ou le second des enregistrements,
et de me positionner sur le premier. Voici ce que je fais:
If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Le formulaire SF virement est celui qui a été initialement conçu pour
la création de l'opération de virement, et dont je te donne le code
ci-après:
Private Sub Valider_Click()
On Error GoTo Err_Valider_Click
If Me!numéro = 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
valeur = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
If Right(Year(date), 2) * 10000 > valeur Then
valeur = Right(Year(date), 1) * 10000
If valeur = 0 Then valeur = 10000
End If
valeur = valeur + 1
val2 = valeur + 1
Me!numéro = valeur
Me!N°_écriture = "E" & Right(Year(date), 1) & Right(valeur, 4)
montant = Me!sortie
tiers = Form!compte.Column(2)
If Not IsNull(Me!ref_pièce) Then pièce = Me!ref_pièce
If Not IsNull(Me!notes) Then notes = Me!notes
entrée = 0
solde = -montant
libellé = "Virement vers compte"
Me!ref_tiers = Form!compte2.Column(2)
' If Not IsNull(notes) Then Me!notes = notes
Me!type = "V"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNew
Me!numéro = val2
Me!N°_écriture = "E" & Right(Year(date), 1) & Right(val2, 4)
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_tiers = tiers
If Not IsNull(pièce) Then Me!ref_pièce = pièce
If Not IsNull(notes) Then Me!notes = notes
Me!type = "V"
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
DoCmd.Close
Exit_Valider_Click:
Exit Sub
Err_Valider_Click:
MsgBox Err.Description
Resume Exit_Valider_Click
End Sub
Voilà, j'espère que j'ai été assez clair dans mes propos et que tu
pourras me donner le coup de main qui me serait bien utile.
@plus
Francis
Raymond [mvp] a utilisé son clavier pour écrire :
Bonjour.
Il semblerait que tu modifies tes enregistrements et non que tu les crées.
est-ce ceci ? ou est-ce que tu dois créer deux nouveaux enregistrements ?
quelle est ta procédure théorique exact pour traiter cette écriture ?
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.1ce87d844de9c2c3.51093@wanad.padspam.fr...
Raymond [mvp] a formulé la demande :
Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.1ca17d843d9b89a2.51093@wanad.padspam.fr...
Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
fhgc@wanadoudou.fr
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir Raymond,
Merci pour ta réponse, qui ne me dépanne malheureusement pas.
Je suis un peu apprenti sorcier dans ma démarche car, bien que ne
connaissant vraiment pas grand chose vis à vis d'Access, je tente
d'adapter une procédure qui marche bien en création, et dont je ne suis
pas du tout l'auteur, pour en faire une procédure de modification, qui
me serait bien utile.
Avec les opérations de débit ou de crédit, ça a bien marché, car il n'y
a qu'un enregistrement dans la table des opérations pour chaque
opération de ce type. Avec les virements, il y a 2 enregistrements qui
sont créés dans cette table. Pour les modifications, il y a donc deux
enregistrements, qui se suivent dans la table, à mettre à jour. Après
avoir fait la modif sur la première, il faut passer à la suivante pour
être complet dans les modifs, et c'est ce passage qui ne se fait pas.
J'ai remplacé GoToNext par GoToNew, comme tu le suggères, mais ça
génère le même message qu'avec Next.
Voilà, si tu peux m'en dire un peu plus, merci beaucoup,
Francis
--
Francis
fhgc@wanadoudou.fr
LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.
--
Francis
fhgc@wanadoudou.fr
LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.
Bonjour.
si tu travailles en multi-utilisateur, ta méthode de création n'est pas
fiable car tu risques d'avoir des doublons dans le Me!N°_écriture et tu ne
pourras jamais atteindre la 2e écriture par ta méthode. chaque écriture doit
avoir son numéro, généré immédiatement avant sa création et les numéros
d'écritues mémorisés dans les deux écritures pour pouvoir faire la
correspondance.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir Raymond,
C'est bien ça, je voudrais pouvoir modifier deux enregistrements de ma
table des opérations comptables, qui résultent en fait d'une seule
opération de virement d'un compte à un autre. Leur création initiale se
fait sans problème, et j'ai naivement cru que je pourrais transposer la
procédure de création pour en faire une procédure de modification, mais
voilà, ça coince.
Les deux enregistrements on des numéros d'ordre qui se suivent dans la
table. Quand je demande une modif du virement correspondant, je suis
capable de savoir si c'est le premier ou le second des enregistrements,
et de me positionner sur le premier. Voici ce que je fais:
If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Le formulaire SF virement est celui qui a été initialement conçu pour
la création de l'opération de virement, et dont je te donne le code
ci-après:
Private Sub Valider_Click()
On Error GoTo Err_Valider_Click
If Me!numéro = 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
valeur = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
If Right(Year(date), 2) * 10000 > valeur Then
valeur = Right(Year(date), 1) * 10000
If valeur = 0 Then valeur = 10000
End If
valeur = valeur + 1
val2 = valeur + 1
Me!numéro = valeur
Me!N°_écriture = "E" & Right(Year(date), 1) & Right(valeur, 4)
montant = Me!sortie
tiers = Form!compte.Column(2)
If Not IsNull(Me!ref_pièce) Then pièce = Me!ref_pièce
If Not IsNull(Me!notes) Then notes = Me!notes
entrée = 0
solde = -montant
libellé = "Virement vers compte"
Me!ref_tiers = Form!compte2.Column(2)
' If Not IsNull(notes) Then Me!notes = notes
Me!type = "V"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNew
Me!numéro = val2
Me!N°_écriture = "E" & Right(Year(date), 1) & Right(val2, 4)
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_tiers = tiers
If Not IsNull(pièce) Then Me!ref_pièce = pièce
If Not IsNull(notes) Then Me!notes = notes
Me!type = "V"
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
DoCmd.Close
Exit_Valider_Click:
Exit Sub
Err_Valider_Click:
MsgBox Err.Description
Resume Exit_Valider_Click
End Sub
Voilà, j'espère que j'ai été assez clair dans mes propos et que tu
pourras me donner le coup de main qui me serait bien utile.
@plus
Francis
Raymond [mvp] a utilisé son clavier pour écrire :Bonjour.
Il semblerait que tu modifies tes enregistrements et non que tu les crées.
est-ce ceci ? ou est-ce que tu dois créer deux nouveaux enregistrements ?
quelle est ta procédure théorique exact pour traiter cette écriture ?
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Raymond [mvp] a formulé la demande :Bonsoir.
Essayer avec acCmdRecordsGoToNew (peut-être)
à quoi sert ton recordset ?
tu définis 2 fois les objets DAO. ( même pour la base il faut préciser
DAO.Database).
tu utilises une variable Val qui est déjà une fonction Access ( ne pas
nommer une variable avec un mot réservé).
des noms de données sont explicités, d'autres non.
faire un dim variant pour décrire un numérique n'est pas très normal, un
Double ou currency serait plus approprié.
pour que ça marche il faut réécrire toute la séquence.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonsoir,
Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.
Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset
If Me!numéro <> 0 Then
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNext
Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce
End If
@+
Francis
--
Francis
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.
Bonsoir Raymond,
Merci pour ta réponse, qui ne me dépanne malheureusement pas.
Je suis un peu apprenti sorcier dans ma démarche car, bien que ne
connaissant vraiment pas grand chose vis à vis d'Access, je tente
d'adapter une procédure qui marche bien en création, et dont je ne suis
pas du tout l'auteur, pour en faire une procédure de modification, qui
me serait bien utile.
Avec les opérations de débit ou de crédit, ça a bien marché, car il n'y
a qu'un enregistrement dans la table des opérations pour chaque
opération de ce type. Avec les virements, il y a 2 enregistrements qui
sont créés dans cette table. Pour les modifications, il y a donc deux
enregistrements, qui se suivent dans la table, à mettre à jour. Après
avoir fait la modif sur la première, il faut passer à la suivante pour
être complet dans les modifs, et c'est ce passage qui ne se fait pas.
J'ai remplacé GoToNext par GoToNew, comme tu le suggères, mais ça
génère le même message qu'avec Next.
Voilà, si tu peux m'en dire un peu plus, merci beaucoup,
Francis
--
Francis
LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.
--
Francis
LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.
ne connaissant pas ta procédure pour atteindre l'enregistrement en
modification, peux-tu l'afficher ici si elle n'est pas trop longue.
normalement, tu devrais faire composer le numéro d'écriture dans une liste
et te positionner sur l'enregistrement avec la fonction FindFirst.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonjour Raymond,
Bien noté ton commentaire ci-dessous.
Dans le cas présent, l'appli que j'essaye d'améliorer sert à gérer une
association sportive dont je suis le trésorier et, pour la partie
trésorerie/compta, j'en suis le seul utilisateur. Ce risque de doublons
est donc inexistant.
Le fait que je ne puisse pas atteindre ma 2ème écriture ne tient donc
pas à l'existence d'un doublon. Je ne peux d'ailleurs pas plus
atteindre la première écriture, ni la dernière, ni en créer une
nouvelle.
Une autre piste, sans doute ?
@ bientôt,
Francis
ne connaissant pas ta procédure pour atteindre l'enregistrement en
modification, peux-tu l'afficher ici si elle n'est pas trop longue.
normalement, tu devrais faire composer le numéro d'écriture dans une liste
et te positionner sur l'enregistrement avec la fonction FindFirst.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.2a767d841fb84cd7.51093@wanad.padspam.fr...
Bonjour Raymond,
Bien noté ton commentaire ci-dessous.
Dans le cas présent, l'appli que j'essaye d'améliorer sert à gérer une
association sportive dont je suis le trésorier et, pour la partie
trésorerie/compta, j'en suis le seul utilisateur. Ce risque de doublons
est donc inexistant.
Le fait que je ne puisse pas atteindre ma 2ème écriture ne tient donc
pas à l'existence d'un doublon. Je ne peux d'ailleurs pas plus
atteindre la première écriture, ni la dernière, ni en créer une
nouvelle.
Une autre piste, sans doute ?
@ bientôt,
Francis
ne connaissant pas ta procédure pour atteindre l'enregistrement en
modification, peux-tu l'afficher ici si elle n'est pas trop longue.
normalement, tu devrais faire composer le numéro d'écriture dans une liste
et te positionner sur l'enregistrement avec la fonction FindFirst.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Bonjour Raymond,
Bien noté ton commentaire ci-dessous.
Dans le cas présent, l'appli que j'essaye d'améliorer sert à gérer une
association sportive dont je suis le trésorier et, pour la partie
trésorerie/compta, j'en suis le seul utilisateur. Ce risque de doublons
est donc inexistant.
Le fait que je ne puisse pas atteindre ma 2ème écriture ne tient donc
pas à l'existence d'un doublon. Je ne peux d'ailleurs pas plus
atteindre la première écriture, ni la dernière, ni en créer une
nouvelle.
Une autre piste, sans doute ?
@ bientôt,
Francis
de la façon dont c'est fait, dans le formulaire stDocName, tu neux pas
atteindre la 2e écriture pour la bonne raison que tu as filtré sur la 1ere
écriture. pour pouvoir l'atteindre il faut l'indiquer dans le critère, mais
il se pose le problème que ton numéro d'écriture est alpha et non numérique,
ce qui semble bizarre.
si c'est alpha:
stLinkCriteria = ("[N°_écriture]='" & Me![N°_écriture] & "'") Or
("[N°_écriture]='" & (Me![N°_écriture] + 1) & "'")
DoCmd.OpenForm stDocName, , , stLinkCriteria
si c'est numerique:
stLinkCriteria = ("[N°_écriture]=" & Me![N°_écriture]) Or
("[N°_écriture]=" & (Me![N°_écriture] + 1))
DoCmd.OpenForm stDocName, , , stLinkCriteria
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Re,
La procédure est hyper courte: la voici:
If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Quelques explications en plus:
Toutes les opérations d'encaissement, de paiement ou de virement des
mes différents comptes font l'objet d'écritures dans une seule et même
table "journal des opérations", avec mention de C, D ou V selon le type
d'opération.
Pour un virement, j'ai 2 écritures: une pour mouvement du compte A vers
compte B qui est rattachée à A, et en sens inverse qui est rattachée au
compte B. Ces 2 enregistrements ont des numéros de séquence qui se
suivent. Que je sois dans la liste des opérations du compte A ou celle
du compte B, je pointe la ligne de l'opération à modifier et s'il
s'agit d'un virement ("V"), j'ai pris pour option de remonter
systématiquement à la première opération des deux: c'est ce que fait le
procédure ci-dessus. Ça, ça marche bien.
C'est ensuite dans ma procédure liée à "SF virement" que je ne parviens
pas à passer à l'enregistrement suivant pour reporter la modif sur la
deuxième ligne qui correspond à la transaction. Je te redonne le code
utilisé (j'ai volontairement réduit le nombre de valeurs à écrire):
Dim montant As Variant
Dim pièce As String
Dim val As Variant
If Me!numéro <> 0 Then ' si numéro = 0, alors je vais vers le
procédure de création dont je t'ai donné le code dans mon post
précédent.
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
solde = -montant
DoCmd.GoToRecord , , acGoTo, CurrentRecord + 1 ' C'est ici que
ça coince. J'ai remplacé cette instruction par : "DoCmd.RunCommand
acCmdRecordsGoToNext" , ou "DoCmd.GoToRecord , , acNext" et ça ne
change rien au blocage.
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
Me!ref_pièce = pièce
End If
Je fais sûrement une méga bourde à un moment, mais où??? Eh bien,
j'espère que ce sera clair pour toi.
@ plus,
Francis
de la façon dont c'est fait, dans le formulaire stDocName, tu neux pas
atteindre la 2e écriture pour la bonne raison que tu as filtré sur la 1ere
écriture. pour pouvoir l'atteindre il faut l'indiquer dans le critère, mais
il se pose le problème que ton numéro d'écriture est alpha et non numérique,
ce qui semble bizarre.
si c'est alpha:
stLinkCriteria = ("[N°_écriture]='" & Me![N°_écriture] & "'") Or
("[N°_écriture]='" & (Me![N°_écriture] + 1) & "'")
DoCmd.OpenForm stDocName, , , stLinkCriteria
si c'est numerique:
stLinkCriteria = ("[N°_écriture]=" & Me![N°_écriture]) Or
("[N°_écriture]=" & (Me![N°_écriture] + 1))
DoCmd.OpenForm stDocName, , , stLinkCriteria
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" <fhgc@wanad.padspam.fr> a écrit dans le message de news:
mn.2b487d8406f4abe0.51093@wanad.padspam.fr...
Re,
La procédure est hyper courte: la voici:
If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Quelques explications en plus:
Toutes les opérations d'encaissement, de paiement ou de virement des
mes différents comptes font l'objet d'écritures dans une seule et même
table "journal des opérations", avec mention de C, D ou V selon le type
d'opération.
Pour un virement, j'ai 2 écritures: une pour mouvement du compte A vers
compte B qui est rattachée à A, et en sens inverse qui est rattachée au
compte B. Ces 2 enregistrements ont des numéros de séquence qui se
suivent. Que je sois dans la liste des opérations du compte A ou celle
du compte B, je pointe la ligne de l'opération à modifier et s'il
s'agit d'un virement ("V"), j'ai pris pour option de remonter
systématiquement à la première opération des deux: c'est ce que fait le
procédure ci-dessus. Ça, ça marche bien.
C'est ensuite dans ma procédure liée à "SF virement" que je ne parviens
pas à passer à l'enregistrement suivant pour reporter la modif sur la
deuxième ligne qui correspond à la transaction. Je te redonne le code
utilisé (j'ai volontairement réduit le nombre de valeurs à écrire):
Dim montant As Variant
Dim pièce As String
Dim val As Variant
If Me!numéro <> 0 Then ' si numéro = 0, alors je vais vers le
procédure de création dont je t'ai donné le code dans mon post
précédent.
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
solde = -montant
DoCmd.GoToRecord , , acGoTo, CurrentRecord + 1 ' C'est ici que
ça coince. J'ai remplacé cette instruction par : "DoCmd.RunCommand
acCmdRecordsGoToNext" , ou "DoCmd.GoToRecord , , acNext" et ça ne
change rien au blocage.
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
Me!ref_pièce = pièce
End If
Je fais sûrement une méga bourde à un moment, mais où??? Eh bien,
j'espère que ce sera clair pour toi.
@ plus,
Francis
de la façon dont c'est fait, dans le formulaire stDocName, tu neux pas
atteindre la 2e écriture pour la bonne raison que tu as filtré sur la 1ere
écriture. pour pouvoir l'atteindre il faut l'indiquer dans le critère, mais
il se pose le problème que ton numéro d'écriture est alpha et non numérique,
ce qui semble bizarre.
si c'est alpha:
stLinkCriteria = ("[N°_écriture]='" & Me![N°_écriture] & "'") Or
("[N°_écriture]='" & (Me![N°_écriture] + 1) & "'")
DoCmd.OpenForm stDocName, , , stLinkCriteria
si c'est numerique:
stLinkCriteria = ("[N°_écriture]=" & Me![N°_écriture]) Or
("[N°_écriture]=" & (Me![N°_écriture] + 1))
DoCmd.OpenForm stDocName, , , stLinkCriteria
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/
"Francis" a écrit dans le message de news:Re,
La procédure est hyper courte: la voici:
If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Quelques explications en plus:
Toutes les opérations d'encaissement, de paiement ou de virement des
mes différents comptes font l'objet d'écritures dans une seule et même
table "journal des opérations", avec mention de C, D ou V selon le type
d'opération.
Pour un virement, j'ai 2 écritures: une pour mouvement du compte A vers
compte B qui est rattachée à A, et en sens inverse qui est rattachée au
compte B. Ces 2 enregistrements ont des numéros de séquence qui se
suivent. Que je sois dans la liste des opérations du compte A ou celle
du compte B, je pointe la ligne de l'opération à modifier et s'il
s'agit d'un virement ("V"), j'ai pris pour option de remonter
systématiquement à la première opération des deux: c'est ce que fait le
procédure ci-dessus. Ça, ça marche bien.
C'est ensuite dans ma procédure liée à "SF virement" que je ne parviens
pas à passer à l'enregistrement suivant pour reporter la modif sur la
deuxième ligne qui correspond à la transaction. Je te redonne le code
utilisé (j'ai volontairement réduit le nombre de valeurs à écrire):
Dim montant As Variant
Dim pièce As String
Dim val As Variant
If Me!numéro <> 0 Then ' si numéro = 0, alors je vais vers le
procédure de création dont je t'ai donné le code dans mon post
précédent.
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
rcst.Close
montant = Me!sortie
pièce = Me!ref_pièce
solde = -montant
DoCmd.GoToRecord , , acGoTo, CurrentRecord + 1 ' C'est ici que
ça coince. J'ai remplacé cette instruction par : "DoCmd.RunCommand
acCmdRecordsGoToNext" , ou "DoCmd.GoToRecord , , acNext" et ça ne
change rien au blocage.
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
Me!ref_pièce = pièce
End If
Je fais sûrement une méga bourde à un moment, mais où??? Eh bien,
j'espère que ce sera clair pour toi.
@ plus,
Francis