[AC97] Problèmes bizarres de 'trous' avec un n° auto
7 réponses
dams_
Bonjour,
J'ai dans une table un champ de type n° auto.
Je remarque des trous dans la séquence attribuée et je ne m'explique
pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs.
Il y a bien un index unique qui pourrait empêcher un enregistrement et
donc expliquer ces trous... mais les utilisateurs ne m'ont jamais
remonté le problème...
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
3stone
Salut ".."
".." a écrit:
J'ai dans une table un champ de type n° auto. Je remarque des trous dans la séquence attribuée et je ne m'explique pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs. Il y a bien un index unique qui pourrait empêcher un enregistrement et donc expliquer ces trous... mais les utilisateurs ne m'ont jamais remonté le problème...
Il n'y a jamais de suppression dans cette table..
Cela est normal lorsque c'est une clé primaire numéroauto et provient du simple fait que l'on annule une saisie débutée.
Cela permet de garantir *dans tous les cas* l'unicité de la clé primaire. Et cette clé ne doit serveir qu'à cela, ne pas être "vu" par l'utilisateur et ne pas être utilisée pour une numérotation "obligatoirement" sans trous.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut ".."
".." <dams_@caramail.com> a écrit:
J'ai dans une table un champ de type n° auto.
Je remarque des trous dans la séquence attribuée et je ne m'explique
pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs.
Il y a bien un index unique qui pourrait empêcher un enregistrement et
donc expliquer ces trous... mais les utilisateurs ne m'ont jamais
remonté le problème...
Il n'y a jamais de suppression dans cette table..
Cela est normal lorsque c'est une clé primaire numéroauto
et provient du simple fait que l'on annule une saisie débutée.
Cela permet de garantir *dans tous les cas* l'unicité de la clé primaire.
Et cette clé ne doit serveir qu'à cela, ne pas être "vu" par l'utilisateur
et ne pas être utilisée pour une numérotation "obligatoirement" sans trous.
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
J'ai dans une table un champ de type n° auto. Je remarque des trous dans la séquence attribuée et je ne m'explique pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs. Il y a bien un index unique qui pourrait empêcher un enregistrement et donc expliquer ces trous... mais les utilisateurs ne m'ont jamais remonté le problème...
Il n'y a jamais de suppression dans cette table..
Cela est normal lorsque c'est une clé primaire numéroauto et provient du simple fait que l'on annule une saisie débutée.
Cela permet de garantir *dans tous les cas* l'unicité de la clé primaire. Et cette clé ne doit serveir qu'à cela, ne pas être "vu" par l'utilisateur et ne pas être utilisée pour une numérotation "obligatoirement" sans trous.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
d
Hello,
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Tu as d'autres idées ?
@+ Damien
"3stone" a écrit dans le message de news: 3fcf33e7$0$285$
Salut ".."
".." a écrit:
J'ai dans une table un champ de type n° auto. Je remarque des trous dans la séquence attribuée et je ne m'explique pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs. Il y a bien un index unique qui pourrait empêcher un enregistrement et donc expliquer ces trous... mais les utilisateurs ne m'ont jamais remonté le problème...
Il n'y a jamais de suppression dans cette table..
Cela est normal lorsque c'est une clé primaire numéroauto et provient du simple fait que l'on annule une saisie débutée.
Cela permet de garantir *dans tous les cas* l'unicité de la clé primaire.
Et cette clé ne doit serveir qu'à cela, ne pas être "vu" par l'utilisateur et ne pas être utilisée pour une numérotation "obligatoirement" sans trous.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Hello,
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille
les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Tu as d'autres idées ?
@+
Damien
"3stone" <3stone@skynet.be> a écrit dans le message de news:
3fcf33e7$0$285$ba620e4c@reader5.news.skynet.be...
Salut ".."
".." <dams_@caramail.com> a écrit:
J'ai dans une table un champ de type n° auto.
Je remarque des trous dans la séquence attribuée et je ne m'explique
pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs.
Il y a bien un index unique qui pourrait empêcher un enregistrement et
donc expliquer ces trous... mais les utilisateurs ne m'ont jamais
remonté le problème...
Il n'y a jamais de suppression dans cette table..
Cela est normal lorsque c'est une clé primaire numéroauto
et provient du simple fait que l'on annule une saisie débutée.
Cela permet de garantir *dans tous les cas* l'unicité de la clé
primaire.
Et cette clé ne doit serveir qu'à cela, ne pas être "vu" par l'utilisateur
et ne pas être utilisée pour une numérotation "obligatoirement" sans
trous.
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Tu as d'autres idées ?
@+ Damien
"3stone" a écrit dans le message de news: 3fcf33e7$0$285$
Salut ".."
".." a écrit:
J'ai dans une table un champ de type n° auto. Je remarque des trous dans la séquence attribuée et je ne m'explique pas ce comportement.
Par exemple :
5,6,7,8,15,16,17,18,30,31, etc
La base est dans un contexte multi-utilisateurs. Il y a bien un index unique qui pourrait empêcher un enregistrement et donc expliquer ces trous... mais les utilisateurs ne m'ont jamais remonté le problème...
Il n'y a jamais de suppression dans cette table..
Cela est normal lorsque c'est une clé primaire numéroauto et provient du simple fait que l'on annule une saisie débutée.
Cela permet de garantir *dans tous les cas* l'unicité de la clé primaire.
Et cette clé ne doit serveir qu'à cela, ne pas être "vu" par l'utilisateur et ne pas être utilisée pour une numérotation "obligatoirement" sans trous.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
3stone
Salut "d",
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Cette clé primaire est en numéroauto ou non ?
Si les ajouts se font par code (Insert Into) regarde de ce coté...
Et si NumAuto et que tu ajoute par 'Insert Into' tu ne peux renseigner la clé... mais ca tu le sais je présume...
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut "d",
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille
les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Cette clé primaire est en numéroauto ou non ?
Si les ajouts se font par code (Insert Into) regarde de ce coté...
Et si NumAuto et que tu ajoute par 'Insert Into' tu ne peux
renseigner la clé... mais ca tu le sais je présume...
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Cette clé primaire est en numéroauto ou non ?
Si les ajouts se font par code (Insert Into) regarde de ce coté...
Et si NumAuto et que tu ajoute par 'Insert Into' tu ne peux renseigner la clé... mais ca tu le sais je présume...
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
d
Hello
"3stone" a écrit dans le message de news: 3fcf3c95$0$285$
Salut "d",
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je surveille
les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre fonction.
Cette clé primaire est en numéroauto ou non ?
Si les ajouts se font par code (Insert Into) regarde de ce coté...
Et si NumAuto et que tu ajoute par 'Insert Into' tu ne peux renseigner la clé... mais ca tu le sais je présume...
Oui, cette clef primaire est en numero auto.
J' insère les enregistrements via ADODB.Execute comme ça :
avec un INSERT INTO myTable (ch1,ch2, ....) VALUES (val1,val2, ....) (le champ n° auto ne faisant bien evidemment pas partie de la liste ch1,ch2, ... )
Donc si ça plante, ADODB me remonte une erreur que je peux traiter. Je sais donc s'il doit y avoir un trou dans la sequence puisque ce cas correspond à une saisie abandonnée.
Or ce cas ne se présente jamais... et du coup, je ne peux pas expliquer tous ces trous dans la séquence.. oouf
Tu me suis ??
@+ Damien
Hello
"3stone" <3stone@skynet.be> a écrit dans le message de news:
3fcf3c95$0$285$ba620e4c@reader5.news.skynet.be...
Salut "d",
Merci poutr ta réponse mais...il n'y a jamais d'insertion avortée.
J'effectue dynamiquement les ajouts via SQL et INSERT INTO.. et je
surveille
les erreurs qui remonte de la base.
C'est effectivement une clef primaire et ce champ n'a pas d'autre
fonction.
Cette clé primaire est en numéroauto ou non ?
Si les ajouts se font par code (Insert Into) regarde de ce coté...
Et si NumAuto et que tu ajoute par 'Insert Into' tu ne peux
renseigner la clé... mais ca tu le sais je présume...
Oui, cette clef primaire est en numero auto.
J' insère les enregistrements via ADODB.Execute comme ça :
avec un INSERT INTO myTable (ch1,ch2, ....) VALUES (val1,val2, ....)
(le champ n° auto ne faisant bien evidemment pas partie de la liste
ch1,ch2, ... )
Donc si ça plante, ADODB me remonte une erreur que je peux traiter. Je sais
donc s'il doit y avoir un trou dans la sequence puisque ce cas correspond à
une saisie abandonnée.
Or ce cas ne se présente jamais... et du coup, je ne peux pas expliquer tous
ces trous dans la séquence.. oouf
avec un INSERT INTO myTable (ch1,ch2, ....) VALUES (val1,val2, ....) (le champ n° auto ne faisant bien evidemment pas partie de la liste ch1,ch2, ... )
Donc si ça plante, ADODB me remonte une erreur que je peux traiter. Je sais donc s'il doit y avoir un trou dans la sequence puisque ce cas correspond à une saisie abandonnée.
Or ce cas ne se présente jamais... et du coup, je ne peux pas expliquer tous ces trous dans la séquence.. oouf
Tu me suis ??
@+ Damien
J-Pierre
Oui oui, on te suit....
Tu peux publier le code ? En particulier celui où tu gères les erreurs ?
J-Pierre
Oui oui, on te suit....
Tu peux publier le code ? En particulier celui où tu gères les erreurs ?
Tu peux publier le code ? En particulier celui où tu gères les erreurs ?
J-Pierre
3stone
"J-Pierre"
Oui oui, on te suit....
Bis repetita...
Oui on suit... malgré l'heure tardive ;-))
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
"J-Pierre"
Oui oui, on te suit....
Bis repetita...
Oui on suit... malgré l'heure tardive ;-))
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
d
Hello,
Quel abnégation les gars !! Voilà le code incriminé ..
Private Const ERR_ADO As Long = -2147217900 Private Const ERR_ADO_DUPLICATE_VALUE As Long = -1605
Private Sub cmd_Save_Click()
Dim myDue As CDue, sInsert As String, sValues As String '-- on enregistre toutes les DUES dans la BDD et on quitte l'application On Error GoTo Err_Resume
For Each myDue In myDues.mCol With myDue sValues = "('" & _ .ID_Societe & "','" & _ .ID_Agence & "','" & _ .ID_Commercial & "','" & _ .Matricule & "','" & _ .Nom & "','" & _ .NumSecu & "','" & _ .DateEmbauche & "','" & _ .HeureEmbauche & "')" End With
If ADODBConnection Is Nothing Then Set ADODBConnection = New ADODB.Connection If ADODBConnection.State = adStateOpen Then Else ADODBConnection.Open sConnString End If ADODBConnection.Execute sInsert & sValues, , adExecuteNoRecords Next myDue
Exit_Sub: myDues.Free Exit Sub
Err_Resume: Select Case Err.Number '-- erreur de données Case ERR_ADO Select Case ADODBConnection.Errors(0).NativeError Case ERR_ADO_DUPLICATE_VALUE MsgBox "Blabla sur les doublons .." Case Else MsgBox "Erreur ADO n° " & ADODBConnection.Errors(0).NativeError & vbCr & ADODBConnection.Errors(0).Description, vbCritical End Select Resume Next Case Else MsgBox "Erreur n° " & Err.Number & vbCr & Err.Description, vbCritical Resume Exit_Sub End Select
End Sub
"J-Pierre" a écrit dans le message de news: #
Oui oui, on te suit....
Tu peux publier le code ? En particulier celui où tu gères les erreurs ?
J-Pierre
Hello,
Quel abnégation les gars !!
Voilà le code incriminé ..
Private Const ERR_ADO As Long = -2147217900
Private Const ERR_ADO_DUPLICATE_VALUE As Long = -1605
Private Sub cmd_Save_Click()
Dim myDue As CDue, sInsert As String, sValues As String
'-- on enregistre toutes les DUES dans la BDD et on quitte l'application
On Error GoTo Err_Resume
For Each myDue In myDues.mCol
With myDue
sValues = "('" & _
.ID_Societe & "','" & _
.ID_Agence & "','" & _
.ID_Commercial & "','" & _
.Matricule & "','" & _
.Nom & "','" & _
.NumSecu & "','" & _
.DateEmbauche & "','" & _
.HeureEmbauche & "')"
End With
If ADODBConnection Is Nothing Then Set ADODBConnection = New
ADODB.Connection
If ADODBConnection.State = adStateOpen Then
Else
ADODBConnection.Open sConnString
End If
ADODBConnection.Execute sInsert & sValues, , adExecuteNoRecords
Next myDue
Exit_Sub:
myDues.Free
Exit Sub
Err_Resume:
Select Case Err.Number
'-- erreur de données
Case ERR_ADO
Select Case ADODBConnection.Errors(0).NativeError
Case ERR_ADO_DUPLICATE_VALUE
MsgBox "Blabla sur les doublons .."
Case Else
MsgBox "Erreur ADO n° " &
ADODBConnection.Errors(0).NativeError & vbCr &
ADODBConnection.Errors(0).Description, vbCritical
End Select
Resume Next
Case Else
MsgBox "Erreur n° " & Err.Number & vbCr & Err.Description,
vbCritical
Resume Exit_Sub
End Select
End Sub
"J-Pierre" <pas.de.pub.jpberchtold@hotmail.com> a écrit dans le message de
news: #c5Z2ZsuDHA.3468@TK2MSFTNGP11.phx.gbl...
Oui oui, on te suit....
Tu peux publier le code ? En particulier celui où tu gères les erreurs ?
Quel abnégation les gars !! Voilà le code incriminé ..
Private Const ERR_ADO As Long = -2147217900 Private Const ERR_ADO_DUPLICATE_VALUE As Long = -1605
Private Sub cmd_Save_Click()
Dim myDue As CDue, sInsert As String, sValues As String '-- on enregistre toutes les DUES dans la BDD et on quitte l'application On Error GoTo Err_Resume
For Each myDue In myDues.mCol With myDue sValues = "('" & _ .ID_Societe & "','" & _ .ID_Agence & "','" & _ .ID_Commercial & "','" & _ .Matricule & "','" & _ .Nom & "','" & _ .NumSecu & "','" & _ .DateEmbauche & "','" & _ .HeureEmbauche & "')" End With
If ADODBConnection Is Nothing Then Set ADODBConnection = New ADODB.Connection If ADODBConnection.State = adStateOpen Then Else ADODBConnection.Open sConnString End If ADODBConnection.Execute sInsert & sValues, , adExecuteNoRecords Next myDue
Exit_Sub: myDues.Free Exit Sub
Err_Resume: Select Case Err.Number '-- erreur de données Case ERR_ADO Select Case ADODBConnection.Errors(0).NativeError Case ERR_ADO_DUPLICATE_VALUE MsgBox "Blabla sur les doublons .." Case Else MsgBox "Erreur ADO n° " & ADODBConnection.Errors(0).NativeError & vbCr & ADODBConnection.Errors(0).Description, vbCritical End Select Resume Next Case Else MsgBox "Erreur n° " & Err.Number & vbCr & Err.Description, vbCritical Resume Exit_Sub End Select
End Sub
"J-Pierre" a écrit dans le message de news: #
Oui oui, on te suit....
Tu peux publier le code ? En particulier celui où tu gères les erreurs ?