Je suis sous Access 97 et dans mon formulaire, j'ai un champ qui permet
d'incr=E9menter un num=E9ro automatiquement =E0 chaque nouvel
enregistrement.Voici le code qui fonctionne parfaitement mais qui
bloque des fois, c'est a dire qu'il n'incr=E9mente plus, soit il remet
le meme num=E9ro que celui d'avant soit il met rien, pourquoi ?
Code :
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim rs As DAO.Recordset
Set rs =3D CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
If rs.EOF Then
Me!NoFA =3D 1
Else
rs.MoveLast
Me!NoFA =3D rs!NoFA + 1
End If
rs.Close
Set rs =3D Nothing
End Sub
J'ai essay=E9 d'=E9crire le num=E9ro qui aurait d=FB apparaitre pour qu'il
puisse recommencer normalement mais au bout de 2 ou 3 enregistrements
=E7a recommence. Alors je suis oblig=E9 d'effacer les enreistrements un
par un jusqu'=E0 ce que l'incr=E9mentation fonctionne normalement, et =E7a
je ne peux pas me le permettre. Si quelqu'un a une id=E9e voire une
solution, je lui serai tr=E8s reconnaissant !
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Tisane
Bonjour Pascal,
Je suis sous Access 97 et dans mon formulaire, j'ai un champ qui permet d'incrémenter un numéro automatiquement à chaque nouvel enregistrement.Voici le code qui fonctionne parfaitement mais qui bloque des fois, c'est a dire qu'il n'incrémente plus, soit il remet le meme numéro que celui d'avant soit il met rien, pourquoi ? Code : Private Sub Form_BeforeInsert(Cancel As Integer) Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot) If rs.EOF Then Me!NoFA = 1 Else rs.MoveLast Me!NoFA = rs!NoFA + 1 End If rs.Close Set rs = Nothing End Sub J'ai essayé d'écrire le numéro qui aurait dû apparaitre pour qu'il puisse recommencer normalement mais au bout de 2 ou 3 enregistrements ça recommence. Alors je suis obligé d'effacer les enreistrements un par un jusqu'à ce que l'incrémentation fonctionne normalement, et ça je ne peux pas me le permettre. Si quelqu'un a une idée voire une solution, je lui serai très reconnaissant !
Juste une idée en attendant que les programmeurs arrivent ;-)) Pour incrémenter un numéro, l'instruction serait plutôt du type ME.NoFA = Dmax("NoFA","Ta_Table") + 1 qui elle, devrait marcher à tous les coups.
-- Tisane
Bonjour Pascal,
Je suis sous Access 97 et dans mon formulaire, j'ai un champ qui
permet d'incrémenter un numéro automatiquement à chaque nouvel
enregistrement.Voici le code qui fonctionne parfaitement mais qui
bloque des fois, c'est a dire qu'il n'incrémente plus, soit il remet
le meme numéro que celui d'avant soit il met rien, pourquoi ?
Code :
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
If rs.EOF Then
Me!NoFA = 1
Else
rs.MoveLast
Me!NoFA = rs!NoFA + 1
End If
rs.Close
Set rs = Nothing
End Sub
J'ai essayé d'écrire le numéro qui aurait dû apparaitre pour qu'il
puisse recommencer normalement mais au bout de 2 ou 3 enregistrements
ça recommence. Alors je suis obligé d'effacer les enreistrements un
par un jusqu'à ce que l'incrémentation fonctionne normalement, et ça
je ne peux pas me le permettre. Si quelqu'un a une idée voire une
solution, je lui serai très reconnaissant !
Juste une idée en attendant que les programmeurs arrivent ;-))
Pour incrémenter un numéro, l'instruction serait plutôt du type
ME.NoFA = Dmax("NoFA","Ta_Table") + 1
qui elle, devrait marcher à tous les coups.
Je suis sous Access 97 et dans mon formulaire, j'ai un champ qui permet d'incrémenter un numéro automatiquement à chaque nouvel enregistrement.Voici le code qui fonctionne parfaitement mais qui bloque des fois, c'est a dire qu'il n'incrémente plus, soit il remet le meme numéro que celui d'avant soit il met rien, pourquoi ? Code : Private Sub Form_BeforeInsert(Cancel As Integer) Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot) If rs.EOF Then Me!NoFA = 1 Else rs.MoveLast Me!NoFA = rs!NoFA + 1 End If rs.Close Set rs = Nothing End Sub J'ai essayé d'écrire le numéro qui aurait dû apparaitre pour qu'il puisse recommencer normalement mais au bout de 2 ou 3 enregistrements ça recommence. Alors je suis obligé d'effacer les enreistrements un par un jusqu'à ce que l'incrémentation fonctionne normalement, et ça je ne peux pas me le permettre. Si quelqu'un a une idée voire une solution, je lui serai très reconnaissant !
Juste une idée en attendant que les programmeurs arrivent ;-)) Pour incrémenter un numéro, l'instruction serait plutôt du type ME.NoFA = Dmax("NoFA","Ta_Table") + 1 qui elle, devrait marcher à tous les coups.
-- Tisane
brainburnt
salut Pascal,
Ce que je ne comprend pas, c'est que tu as bien défini ton champs comme étant un numéro automatique ou just eun champ de type numérique??
Car normalement si c'est un Numéro Auto, Access fais l'incrémentation tout seul comme un grand.
Exemple: Un formulaire d'ajout de données avec un champs s'appelant descriptionTempo
Une table TEMPO
2champs: - numero : Numéro Auto - description : Texte.
Si j'ai répondu a côté de la plaque, j'en suis désolé ^^
brainburnt
Tisane
Rebonjour brainburnt,
Ce que je ne comprend pas, c'est que tu as bien défini ton champs comme étant un numéro automatique ou just eun champ de type numérique?? Car normalement si c'est un Numéro Auto, Access fais l'incrémentation tout seul comme un grand. [...]
Si j'ai répondu a côté de la plaque, j'en suis désolé ^^
Non tu n'as pas répondu à côté de la plaque, mais il est fréquent que l'on veuille incrémenter un numéro sans passer par la numérotation automatique. Exemple : la numérotation de factures. Si on utilise le numéro auto, on aura obligatoirement des trous. Il suffit qu'on commence une facture, puis qu'on s'échappe et c'est fichu pour le numéro séquentiel. Or, on ne peut/doit pas avoir de trous dans un facturier. Il y a d'autres exemples bien sûr comme des n° de références, etc. Donc, il utilise vraisemblablement un champ numérique auquel il faut qu'il ajoute +1 sur le numéro le plus élevé.
Mais si Pascal revient, il nous en dira peut-être plus ;-)
-- Tisane
Rebonjour brainburnt,
Ce que je ne comprend pas, c'est que tu as bien défini ton champs
comme étant un numéro automatique ou just eun champ de type
numérique??
Car normalement si c'est un Numéro Auto, Access fais l'incrémentation
tout seul comme un grand.
[...]
Si j'ai répondu a côté de la plaque, j'en suis désolé ^^
Non tu n'as pas répondu à côté de la plaque, mais il est fréquent que l'on
veuille incrémenter un numéro sans passer par la numérotation automatique.
Exemple : la numérotation de factures.
Si on utilise le numéro auto, on aura obligatoirement des trous. Il suffit
qu'on commence une facture, puis qu'on s'échappe et c'est fichu pour le
numéro séquentiel.
Or, on ne peut/doit pas avoir de trous dans un facturier. Il y a d'autres
exemples bien sûr comme des n° de références, etc.
Donc, il utilise vraisemblablement un champ numérique auquel il faut qu'il
ajoute +1 sur le numéro le plus élevé.
Mais si Pascal revient, il nous en dira peut-être plus ;-)
Ce que je ne comprend pas, c'est que tu as bien défini ton champs comme étant un numéro automatique ou just eun champ de type numérique?? Car normalement si c'est un Numéro Auto, Access fais l'incrémentation tout seul comme un grand. [...]
Si j'ai répondu a côté de la plaque, j'en suis désolé ^^
Non tu n'as pas répondu à côté de la plaque, mais il est fréquent que l'on veuille incrémenter un numéro sans passer par la numérotation automatique. Exemple : la numérotation de factures. Si on utilise le numéro auto, on aura obligatoirement des trous. Il suffit qu'on commence une facture, puis qu'on s'échappe et c'est fichu pour le numéro séquentiel. Or, on ne peut/doit pas avoir de trous dans un facturier. Il y a d'autres exemples bien sûr comme des n° de références, etc. Donc, il utilise vraisemblablement un champ numérique auquel il faut qu'il ajoute +1 sur le numéro le plus élevé.
Mais si Pascal revient, il nous en dira peut-être plus ;-)
-- Tisane
brainburnt
Alors je suis d'accord avec toi pour ce qui est du code
Pour incrémenter un numéro, l'instruction serait plutôt du type ME.NoFA = Dmax("NoFA","Ta_Table") + 1 qui elle, devrait marcher à tous les coups.
Mais attendons notre ami pour savoir ce qui l'en est réellement ^^
Alors je suis d'accord avec toi pour ce qui est du code
Pour incrémenter un numéro, l'instruction serait plutôt du type
ME.NoFA = Dmax("NoFA","Ta_Table") + 1
qui elle, devrait marcher à tous les coups.
Mais attendons notre ami pour savoir ce qui l'en est réellement ^^
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne vous répondre que maintenant....
tisane a raison concernant le type de champ que j'ai utilisé.
j'essaye de suite le code que tu m'as suggéré et je te reponds.
pascal913
pascal913 wrote:
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne vous répondre que maintenant....
tisane a raison concernant le type de champ que j'ai utilisé.
j'essaye de suite le code que tu m'as suggéré et je te reponds.
mais que faut il faire ? remplacer ton code par une de mes ligne ? ou garder que ta ligne ? je n'utilise access que depuis poins de deux mois et mes connaissances en programmation sont très limitée, alors, si tu pouvais m'expliquer stp.......
merci
pascal913 wrote:
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne
vous répondre que maintenant....
tisane a raison concernant le type de champ que j'ai utilisé.
j'essaye de suite le code que tu m'as suggéré et je te reponds.
mais que faut il faire ? remplacer ton code par une de mes ligne ? ou
garder que ta ligne ? je n'utilise access que depuis poins de deux mois
et mes connaissances en programmation sont très limitée, alors, si tu
pouvais m'expliquer stp.......
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne vous répondre que maintenant....
tisane a raison concernant le type de champ que j'ai utilisé.
j'essaye de suite le code que tu m'as suggéré et je te reponds.
mais que faut il faire ? remplacer ton code par une de mes ligne ? ou garder que ta ligne ? je n'utilise access que depuis poins de deux mois et mes connaissances en programmation sont très limitée, alors, si tu pouvais m'expliquer stp.......
merci
Tisane
Rebonjour pascal,
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne vous répondre que maintenant.... tisane a raison concernant le type de champ que j'ai utilisé. mais que faut il faire ? remplacer ton code par une de mes ligne ? ou
garder que ta ligne ? je n'utilise access que depuis poins de deux mois et mes connaissances en programmation sont très limitée, alors, si tu pouvais m'expliquer stp.......
Essaie uniquement avec ma ligne : Private Sub Form_BeforeInsert(Cancel As Integer) Me.NoFA = Dmax("NoFA","Ta_Table") + 1 End Sub
Sans doute perfectible ;-) -- Tisane
Rebonjour pascal,
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne
vous répondre que maintenant....
tisane a raison concernant le type de champ que j'ai utilisé.
mais que faut il faire ? remplacer ton code par une de mes ligne ? ou
garder que ta ligne ? je n'utilise access que depuis poins de deux
mois et mes connaissances en programmation sont très limitée, alors,
si tu pouvais m'expliquer stp.......
Essaie uniquement avec ma ligne :
Private Sub Form_BeforeInsert(Cancel As Integer)
Me.NoFA = Dmax("NoFA","Ta_Table") + 1
End Sub
bonjour a tous et merci de m'avoir répondu, je suis désolé de ne vous répondre que maintenant.... tisane a raison concernant le type de champ que j'ai utilisé. mais que faut il faire ? remplacer ton code par une de mes ligne ? ou
garder que ta ligne ? je n'utilise access que depuis poins de deux mois et mes connaissances en programmation sont très limitée, alors, si tu pouvais m'expliquer stp.......
Essaie uniquement avec ma ligne : Private Sub Form_BeforeInsert(Cancel As Integer) Me.NoFA = Dmax("NoFA","Ta_Table") + 1 End Sub