Incrémentation à l'aide d'une fonction

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Argyronet
Le #6368321
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





Guy FALESSE
Le #6368311
Salut Argyronet,

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

The following message to 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" 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







Argyronet
Le #6368301
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 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" 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












Guy FALESSE
Le #6368291
Bonjour,

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

"Guy FALESSE"
Salut Argyronet,

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

The following message to 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" 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











Guy FALESSE
Le #6368141
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"
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




Publicité
Poster une réponse
Anonyme