Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2011, 18h25   #1
Invité régulier
 
Inscription : septembre 2005
Messages : 105
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 105
Points : 9
Points : 9
Par défaut Recordset qui "saute" un enregistrement sur 2 ?

Bonjour,

J'ai un problème par rapport à une procédure VBA de ma base. Je souhaite tout simplement ajouter un nouvel enregistrement à une table. Or quand j'exécute mon code, il ajoute bien un nouvel enregistrement mais la clé primaire (numeroauto) a été incrémenté 2 fois : si la clé est 51, l'enregistrement créé via le recordset sera en 53. En soi, ca ne me dérange pas, mais cela montre qu'il y a une erreur quelquepart....


voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
'Bouton "Valider"
Private Sub Commande14_Click()
Dim base As Database
Dim rec As Recordset
Dim form_pere As String
Dim numcdp As Long
'Recoit en paramètre le nom du formulaire qui a appelé le formulaire en cours en utilisant openargs
form_pere = Me.OpenArgs
 
Set base = CurrentDb
Set rec = base.OpenRecordset("TabRessources")
rec.AddNew
 
rec![Nom] = UCase(Me.Texte2.Value) & " " & UCase(Left(Me.Texte4.Value, 1)) & LCase(Right(Me.Texte4.Value, Len(Me.Texte4.Value) - 1))
 
rec![Entite] = Me.Lentite.Value
 
numcdp = rec![NumRessource]
 
rec.Update
 
Set rec = Nothing
Set base = Nothing
 
Forms(form_pere).Chefdeprojet = numcdp
Forms(form_pere).LChefdeprojet.Requery
 
Me.Undo
DoCmd.Close
End If
End Sub
Merci pour vos conseils !
junty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 18h42   #2
Invité régulier
 
Inscription : septembre 2005
Messages : 105
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 105
Points : 9
Points : 9
Je viens de trouver la solution.

En fait, mon formulaire était en mode "entrée données" et il y avait donc virtuellement un enregistrement ouvert dans ce formulaire.

Il fallait donc passer cette propriété du formulaire à NON.

Merci.

Citation:
Envoyé par junty Voir le message
Bonjour,

J'ai un problème par rapport à une procédure VBA de ma base. Je souhaite tout simplement ajouter un nouvel enregistrement à une table. Or quand j'exécute mon code, il ajoute bien un nouvel enregistrement mais la clé primaire (numeroauto) a été incrémenté 2 fois : si la clé est 51, l'enregistrement créé via le recordset sera en 53. En soi, ca ne me dérange pas, mais cela montre qu'il y a une erreur quelquepart....


voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
'Bouton "Valider"
Private Sub Commande14_Click()
Dim base As Database
Dim rec As Recordset
Dim form_pere As String
Dim numcdp As Long
'Recoit en paramètre le nom du formulaire qui a appelé le formulaire en cours en utilisant openargs
form_pere = Me.OpenArgs
 
Set base = CurrentDb
Set rec = base.OpenRecordset("TabRessources")
rec.AddNew
 
rec![Nom] = UCase(Me.Texte2.Value) & " " & UCase(Left(Me.Texte4.Value, 1)) & LCase(Right(Me.Texte4.Value, Len(Me.Texte4.Value) - 1))
 
rec![Entite] = Me.Lentite.Value
 
numcdp = rec![NumRessource]
 
rec.Update
 
Set rec = Nothing
Set base = Nothing
 
Forms(form_pere).Chefdeprojet = numcdp
Forms(form_pere).LChefdeprojet.Requery
 
Me.Undo
DoCmd.Close
End If
End Sub
Merci pour vos conseils !
junty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h06.


 
 
 
 
Partenaires

Hébergement Web