Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Incrémentation à l'aide d'une fonction

5 réponses
Avatar
Guy FALESSE
Bonjour à toutes et à tous,

J'ai créé une fonction (juste un essai) qui incrémente un table, pas de
problème, cela fonctionne.
Mais sur le formulaire, en bas, se trouve les boutons de navigations et en
cliquant sur n'importe quel bouton, l'incrémentation se fait toujours,
comment faire pour empêcher cela.
Je vous livre la fonction ci-dessous:

Public Function fct_Incrément()
Dim meF As Form, maBD As Database, rst As Recordset, leNbre As Long
Set maBD = CurrentDb
leNbre = 0
Set rst = maBD.OpenRecordset("table1", dbOpenDynaset)
DoCmd.OpenForm "formulaire1"
Set meF = Forms!formulaire1
meF.Refresh
With rst
If rst.RecordCount > 0 Then
.MoveLast
leNbre = !NBON
Else
leNbre = 50000
.Close
End If
End With
meF.Refresh
DoCmd.GoToRecord , , acNewRec
meF!NBON = leNbre + 1
meF!NSERV = "24000" 'n° de service
meF!BCDE = meF!NSERV & Str(meF!NBON)
'meF!BCDE = ""
Set maBD = Nothing
Set meF = Nothing
Set rst = Nothing
End Function

D'avance merci pour vos renseignements.

@+

Guy FALESSE

5 réponses

Avatar
Argyronet
Bonjour,

Pour obtenir un incrément correcte sur un champ numérique, il est préférable
de faire un MAX+1
Soit par exemple :
Function Increment()
Dim lngDernier As Long
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("SELECT MAX(Champ) AS Dernier FROM
MaTable", 2)
With rs
If .EOF Then
lngDernier = 1
Else
lngDernier = .Fields("Dernier") + 1
End If
.Close
End With
Set rs = Nothing
Increment = lngDernier
End Function

Ensuite il faut définir les propriétés du cycle du formulaire sur
"Enregistrement en cours".
Par ailleurs, personnellement, j'enlève systématiquement les boutons de
navigation dans mes applis au profit de contrôles que je créé de toute pièce.
=> Cela me permet de faire figurer ce que je veux et de contrôler les états
et actions sur ces boutons.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/



Bonjour à toutes et à tous,

J'ai créé une fonction (juste un essai) qui incrémente un table, pas de
problème, cela fonctionne.
Mais sur le formulaire, en bas, se trouve les boutons de navigations et en
cliquant sur n'importe quel bouton, l'incrémentation se fait toujours,
comment faire pour empêcher cela.
Je vous livre la fonction ci-dessous:

Public Function fct_Incrément()
Dim meF As Form, maBD As Database, rst As Recordset, leNbre As Long
Set maBD = CurrentDb
leNbre = 0
Set rst = maBD.OpenRecordset("table1", dbOpenDynaset)
DoCmd.OpenForm "formulaire1"
Set meF = Forms!formulaire1
meF.Refresh
With rst
If rst.RecordCount > 0 Then
.MoveLast
leNbre = !NBON
Else
leNbre = 50000
.Close
End If
End With
meF.Refresh
DoCmd.GoToRecord , , acNewRec
meF!NBON = leNbre + 1
meF!NSERV = "24000" 'n° de service
meF!BCDE = meF!NSERV & Str(meF!NBON)
'meF!BCDE = ""
Set maBD = Nothing
Set meF = Nothing
Set rst = Nothing
End Function

D'avance merci pour vos renseignements.

@+

Guy FALESSE





Avatar
Guy FALESSE
Salut Argyronet,

J'ai reç ça comme réponse:

The following message to was
undeliverable.

The reason for the problem:

5.1.2 - Bad destination host 'DNS Hard Error looking up
discussions.microsoft.com (MX): NXDomain'



@+



Guy FALESSE

"Argyronet" a écrit dans le message de
news:
Bonjour,

Pour obtenir un incrément correcte sur un champ numérique, il est
préférable
de faire un MAX+1
Soit par exemple :
Function Increment()
Dim lngDernier As Long
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("SELECT MAX(Champ) AS Dernier FROM
MaTable", 2)
With rs
If .EOF Then
lngDernier = 1
Else
lngDernier = .Fields("Dernier") + 1
End If
.Close
End With
Set rs = Nothing
Increment = lngDernier
End Function

Ensuite il faut définir les propriétés du cycle du formulaire sur
"Enregistrement en cours".
Par ailleurs, personnellement, j'enlève systématiquement les boutons de
navigation dans mes applis au profit de contrôles que je créé de toute
pièce.
=> Cela me permet de faire figurer ce que je veux et de contrôler les
états
et actions sur ces boutons.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/



Bonjour à toutes et à tous,

J'ai créé une fonction (juste un essai) qui incrémente un table, pas de
problème, cela fonctionne.
Mais sur le formulaire, en bas, se trouve les boutons de navigations et
en
cliquant sur n'importe quel bouton, l'incrémentation se fait toujours,
comment faire pour empêcher cela.
Je vous livre la fonction ci-dessous:

Public Function fct_Incrément()
Dim meF As Form, maBD As Database, rst As Recordset, leNbre As Long
Set maBD = CurrentDb
leNbre = 0
Set rst = maBD.OpenRecordset("table1", dbOpenDynaset)
DoCmd.OpenForm "formulaire1"
Set meF = Forms!formulaire1
meF.Refresh
With rst
If rst.RecordCount > 0 Then
.MoveLast
leNbre = !NBON
Else
leNbre = 50000
.Close
End If
End With
meF.Refresh
DoCmd.GoToRecord , , acNewRec
meF!NBON = leNbre + 1
meF!NSERV = "24000" 'n° de service
meF!BCDE = meF!NSERV & Str(meF!NBON)
'meF!BCDE = ""
Set maBD = Nothing
Set meF = Nothing
Set rst = Nothing
End Function

D'avance merci pour vos renseignements.

@+

Guy FALESSE







Avatar
Argyronet
Hum, bizarre...
Je lis bien ma réponse entre vos 2 posts.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/



Salut Argyronet,

J'ai reç ça comme réponse:

The following message to was
undeliverable.

The reason for the problem:

5.1.2 - Bad destination host 'DNS Hard Error looking up
discussions.microsoft.com (MX): NXDomain'



@+



Guy FALESSE

"Argyronet" a écrit dans le message de
news:
Bonjour,

Pour obtenir un incrément correcte sur un champ numérique, il est
préférable
de faire un MAX+1
Soit par exemple :
Function Increment()
Dim lngDernier As Long
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("SELECT MAX(Champ) AS Dernier FROM
MaTable", 2)
With rs
If .EOF Then
lngDernier = 1
Else
lngDernier = .Fields("Dernier") + 1
End If
.Close
End With
Set rs = Nothing
Increment = lngDernier
End Function

Ensuite il faut définir les propriétés du cycle du formulaire sur
"Enregistrement en cours".
Par ailleurs, personnellement, j'enlève systématiquement les boutons de
navigation dans mes applis au profit de contrôles que je créé de toute
pièce.
=> Cela me permet de faire figurer ce que je veux et de contrôler les
états
et actions sur ces boutons.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/



Bonjour à toutes et à tous,

J'ai créé une fonction (juste un essai) qui incrémente un table, pas de
problème, cela fonctionne.
Mais sur le formulaire, en bas, se trouve les boutons de navigations et
en
cliquant sur n'importe quel bouton, l'incrémentation se fait toujours,
comment faire pour empêcher cela.
Je vous livre la fonction ci-dessous:

Public Function fct_Incrément()
Dim meF As Form, maBD As Database, rst As Recordset, leNbre As Long
Set maBD = CurrentDb
leNbre = 0
Set rst = maBD.OpenRecordset("table1", dbOpenDynaset)
DoCmd.OpenForm "formulaire1"
Set meF = Forms!formulaire1
meF.Refresh
With rst
If rst.RecordCount > 0 Then
.MoveLast
leNbre = !NBON
Else
leNbre = 50000
.Close
End If
End With
meF.Refresh
DoCmd.GoToRecord , , acNewRec
meF!NBON = leNbre + 1
meF!NSERV = "24000" 'n° de service
meF!BCDE = meF!NSERV & Str(meF!NBON)
'meF!BCDE = ""
Set maBD = Nothing
Set meF = Nothing
Set rst = Nothing
End Function

D'avance merci pour vos renseignements.

@+

Guy FALESSE












Avatar
Guy FALESSE
Bonjour,

Je vais ouvrir un autre post, ayant sans doute mal formulé ma question :-(
merci à ceux qui ont cherché.
@+
Guy FALESSE

"Guy FALESSE" a écrit dans le message de news:

Salut Argyronet,

J'ai reç ça comme réponse:

The following message to was
undeliverable.

The reason for the problem:

5.1.2 - Bad destination host 'DNS Hard Error looking up
discussions.microsoft.com (MX): NXDomain'



@+



Guy FALESSE

"Argyronet" a écrit dans le message
de news:
Bonjour,

Pour obtenir un incrément correcte sur un champ numérique, il est
préférable
de faire un MAX+1
Soit par exemple :
Function Increment()
Dim lngDernier As Long
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("SELECT MAX(Champ) AS Dernier FROM
MaTable", 2)
With rs
If .EOF Then
lngDernier = 1
Else
lngDernier = .Fields("Dernier") + 1
End If
.Close
End With
Set rs = Nothing
Increment = lngDernier
End Function

Ensuite il faut définir les propriétés du cycle du formulaire sur
"Enregistrement en cours".
Par ailleurs, personnellement, j'enlève systématiquement les boutons de
navigation dans mes applis au profit de contrôles que je créé de toute
pièce.
=> Cela me permet de faire figurer ce que je veux et de contrôler les
états
et actions sur ces boutons.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/



Bonjour à toutes et à tous,

J'ai créé une fonction (juste un essai) qui incrémente un table, pas de
problème, cela fonctionne.
Mais sur le formulaire, en bas, se trouve les boutons de navigations et
en
cliquant sur n'importe quel bouton, l'incrémentation se fait toujours,
comment faire pour empêcher cela.
Je vous livre la fonction ci-dessous:

Public Function fct_Incrément()
Dim meF As Form, maBD As Database, rst As Recordset, leNbre As Long
Set maBD = CurrentDb
leNbre = 0
Set rst = maBD.OpenRecordset("table1", dbOpenDynaset)
DoCmd.OpenForm "formulaire1"
Set meF = Forms!formulaire1
meF.Refresh
With rst
If rst.RecordCount > 0 Then
.MoveLast
leNbre = !NBON
Else
leNbre = 50000
.Close
End If
End With
meF.Refresh
DoCmd.GoToRecord , , acNewRec
meF!NBON = leNbre + 1
meF!NSERV = "24000" 'n° de service
meF!BCDE = meF!NSERV & Str(meF!NBON)
'meF!BCDE = ""
Set maBD = Nothing
Set meF = Nothing
Set rst = Nothing
End Function

D'avance merci pour vos renseignements.

@+

Guy FALESSE











Avatar
Guy FALESSE
Re-bonjour,
Finalement, j'ai retrouvé comment faire, ah! Cette vieillesse qui s'annonce
:-(
Sur Activation du formulaire on fait:
Dim newrec, rest as recordset
NexRec=Me.NewRecord
set rst=me.RecordsetClone
Etc. etc.

Merci en tout cas à celles ou ceux qui auraient cherché :-)

@+

Guy FALESSE

"Guy FALESSE" a écrit dans le message de news:

Bonjour à toutes et à tous,

J'ai créé une fonction (juste un essai) qui incrémente un table, pas de
problème, cela fonctionne.
Mais sur le formulaire, en bas, se trouve les boutons de navigations et en
cliquant sur n'importe quel bouton, l'incrémentation se fait toujours,
comment faire pour empêcher cela.
Je vous livre la fonction ci-dessous:

Public Function fct_Incrément()
Dim meF As Form, maBD As Database, rst As Recordset, leNbre As Long
Set maBD = CurrentDb
leNbre = 0
Set rst = maBD.OpenRecordset("table1", dbOpenDynaset)
DoCmd.OpenForm "formulaire1"
Set meF = Forms!formulaire1
meF.Refresh
With rst
If rst.RecordCount > 0 Then
.MoveLast
leNbre = !NBON
Else
leNbre = 50000
.Close
End If
End With
meF.Refresh
DoCmd.GoToRecord , , acNewRec
meF!NBON = leNbre + 1
meF!NSERV = "24000" 'n° de service
meF!BCDE = meF!NSERV & Str(meF!NBON)
'meF!BCDE = ""
Set maBD = Nothing
Set meF = Nothing
Set rst = Nothing
End Function

D'avance merci pour vos renseignements.

@+

Guy FALESSE