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

Problème d'enregistrement pour une valeur bien spécifique d'un champ

1 réponse
Avatar
Grég
Base cr=E9e sous Access 2000, transf=E9r=E9e sous Access 2002
Pour chaque formulaire, il y a une triple cl=E9 primaire=20
[NUMC] (3 caract=E8res), [NUME] (2 caract=E8res) et [CODA] (3=20
caract=E8res)
Sur chaque contr=F4le de chaque formulaire, il y a une=20
proc=E9dure =AB Apr=E8sMaj =BB qui rempli une table HISTORIQUE=20
(qui a pour cl=E9 primaire un num=E9ro auto) avec la date et=20
l'heure (auto), la triple cl=E9 primaire du formulaire, la=20
personne qui saisie, le nom du formulaire, le nom de la=20
table, le nom du champ, l'ancienne valeur et la nouvelle=20
valeur.
Ci-dessous la proc=E9dure :

Public Function HISTO1(VALEUR As Control)
Dim MaBD As Database
Dim HISTO As Recordset

Set MaBD =3D DBEngine.Workspaces(0).Databases(0)

' Ouvre un jeu d'enregistrements de type Dynamique.
Set HISTO =3D MaBD.OpenRecordset("HISTORIQUE", dbOpenDynaset)

With HISTO
.AddNew
!NOUVELLE_VALEUR =3D VALEUR
!ANCIENNE_VALEUR =3D VALEUR.OldValue
!NOM_CHAMP_MODIFIE =3D VALEUR.Name
!NOM_TABLE_MODIFIEE =3D Screen.ActiveForm.RecordSource
!NOM_FORMULAIRE =3D Screen.ActiveForm.Name
!NUMC =3D Screen.ActiveForm.[NUMC]
!NUME =3D Screen.ActiveForm.[NUME]
!CODA =3D Screen.ActiveForm.[CODA]
!SAISIE =3D Screen.ActiveForm.[SAISIE]
.Update
End With

End Function


Cela fonctionne tr=E8s bien sur tous les formulaires sauf=20
quand [NUMC] est =E9gal =E0 091 et que l'on est en mode=20
modification (en mode ajout de donn=E9es, pas de soucis) :=20
d=E8s que l'on modifie un contr=F4le, on se retrouve bloqu=E9=20
sans message d'erreur avec pour seul solution=20
Ctrl+Alt+Suppr.

Est-ce que quelqu'un a une id=E9e sur la raison du blocage=20
sur une valeur bien pr=E9cise d'une des trois cl=E9s primaire

Merci d'avance
Gr=E9g

1 réponse

Avatar
Pierre CFI [mvp]
bonjour
je serais a ta place j'enverrais ces valeurs vers une copie de ta table en supprimant l'attribut clé primaire pour voir si par
hazard 091 n'aurait pas été transformé en autre chose

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Grég" a écrit dans le message de news: 2ef901c3e19e$a7963fb0$
Base crée sous Access 2000, transférée sous Access 2002
Pour chaque formulaire, il y a une triple clé primaire
[NUMC] (3 caractères), [NUME] (2 caractères) et [CODA] (3
caractères)
Sur chaque contrôle de chaque formulaire, il y a une
procédure « AprèsMaj » qui rempli une table HISTORIQUE
(qui a pour clé primaire un numéro auto) avec la date et
l'heure (auto), la triple clé primaire du formulaire, la
personne qui saisie, le nom du formulaire, le nom de la
table, le nom du champ, l'ancienne valeur et la nouvelle
valeur.
Ci-dessous la procédure :

Public Function HISTO1(VALEUR As Control)
Dim MaBD As Database
Dim HISTO As Recordset

Set MaBD = DBEngine.Workspaces(0).Databases(0)

' Ouvre un jeu d'enregistrements de type Dynamique.
Set HISTO = MaBD.OpenRecordset("HISTORIQUE", dbOpenDynaset)

With HISTO
.AddNew
!NOUVELLE_VALEUR = VALEUR
!ANCIENNE_VALEUR = VALEUR.OldValue
!NOM_CHAMP_MODIFIE = VALEUR.Name
!NOM_TABLE_MODIFIEE = Screen.ActiveForm.RecordSource
!NOM_FORMULAIRE = Screen.ActiveForm.Name
!NUMC = Screen.ActiveForm.[NUMC]
!NUME = Screen.ActiveForm.[NUME]
!CODA = Screen.ActiveForm.[CODA]
!SAISIE = Screen.ActiveForm.[SAISIE]
.Update
End With

End Function


Cela fonctionne très bien sur tous les formulaires sauf
quand [NUMC] est égal à 091 et que l'on est en mode
modification (en mode ajout de données, pas de soucis) :
dès que l'on modifie un contrôle, on se retrouve bloqué
sans message d'erreur avec pour seul solution
Ctrl+Alt+Suppr.

Est-ce que quelqu'un a une idée sur la raison du blocage
sur une valeur bien précise d'une des trois clés primaire

Merci d'avance
Grég