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

Probleme code before update lié à une table ODBC SQLSERVER

15 réponses
Avatar
jerome crevecoeur
Bonjour,

Je suis en train de r=E9aliser une application en Access XP li=E9 =E0 une=
base=20
de donn=E9es SQL SERVER 2000.
J'ai une table couleur dans cette base et j'ai un formulaire en continu=20
pour saisir une grille de couleurs.
J'ai un champ cach=E9 qui contient la date de derniere modification de ma=
=20
ligne.

Je le met =E0 jour gr=E2ce =E0 =E7e code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.pfc_datemodification =3D Now
End Sub


LA premi=E8re fois que je modifie ma ligne cela fonctionne mais quand je =

veux retourner dessus, j'ai ce message laconique:

"Les donn=E9es ont =E9t=E9 modifi=E9es par un autre utilisateur
Un autre utilisateur a modifi=E9...patati patata
Re-modifiez l'enregistrement"

Bien sur, je suis seul sur la base et si je mets mon code en=20
commentaire, il n'y a plus d'erreur.


Alors qui le prem's? Jessy, Tisane, Raymond, Pierre (qui doit =EAtre du=20
maine et loire je crois)

10 réponses

1 2
Avatar
jerome crevecoeur
bon bah, ça n'inspire pas grand monde tout ça ou par ce beau temps to ut
le monde est en train de faire son jardin?

Bonjour,

Je suis en train de réaliser une application en Access XP lié à u ne base
de données SQL SERVER 2000.
J'ai une table couleur dans cette base et j'ai un formulaire en continu
pour saisir une grille de couleurs.
J'ai un champ caché qui contient la date de derniere modification de ma
ligne.

Je le met à jour grâce à çe code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.pfc_datemodification = Now
End Sub


LA première fois que je modifie ma ligne cela fonctionne mais quand j e
veux retourner dessus, j'ai ce message laconique:

"Les données ont été modifiées par un autre utilisateur
Un autre utilisateur a modifié...patati patata
Re-modifiez l'enregistrement"

Bien sur, je suis seul sur la base et si je mets mon code en
commentaire, il n'y a plus d'erreur.


Alors qui le prem's? Jessy, Tisane, Raymond, Pierre (qui doit être du
maine et loire je crois)






Avatar
aa
Bonjour

un docmd.runcommand accmdsaverecord peut etre ?

"jerome crevecoeur"
a écrit dans le message de news:
bon bah, ça n'inspire pas grand monde tout ça ou par ce beau temps tout
le monde est en train de faire son jardin?

Bonjour,

Je suis en train de réaliser une application en Access XP lié à une base
de données SQL SERVER 2000.
J'ai une table couleur dans cette base et j'ai un formulaire en continu
pour saisir une grille de couleurs.
J'ai un champ caché qui contient la date de derniere modification de ma
ligne.

Je le met à jour grâce à çe code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.pfc_datemodification = Now
End Sub


LA première fois que je modifie ma ligne cela fonctionne mais quand je
veux retourner dessus, j'ai ce message laconique:

"Les données ont été modifiées par un autre utilisateur
Un autre utilisateur a modifié...patati patata
Re-modifiez l'enregistrement"

Bien sur, je suis seul sur la base et si je mets mon code en commentaire,
il n'y a plus d'erreur.


Alors qui le prem's? Jessy, Tisane, Raymond, Pierre (qui doit être du
maine et loire je crois)






Avatar
jerome crevecoeur
Merci pour ta réponse mais je suis dans la procédure before update du
formulaire.
donc on ne peut pas faire une sauvegarde de l'enregistrement courant.

Bonjour

un docmd.runcommand accmdsaverecord peut etre ?

"jerome crevecoeur" o.fr>
a écrit dans le message de news: l...
bon bah, ça n'inspire pas grand monde tout ça ou par ce beau temps tout
le monde est en train de faire son jardin?

Bonjour,

Je suis en train de réaliser une application en Access XP lié à une base
de données SQL SERVER 2000.
J'ai une table couleur dans cette base et j'ai un formulaire en contin u
pour saisir une grille de couleurs.
J'ai un champ caché qui contient la date de derniere modification de ma
ligne.

Je le met à jour grâce à çe code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.pfc_datemodification = Now
End Sub


LA première fois que je modifie ma ligne cela fonctionne mais quand je
veux retourner dessus, j'ai ce message laconique:

"Les données ont été modifiées par un autre utilisateur
Un autre utilisateur a modifié...patati patata
Re-modifiez l'enregistrement"

Bien sur, je suis seul sur la base et si je mets mon code en commentai re,
il n'y a plus d'erreur.


Alors qui le prem's? Jessy, Tisane, Raymond, Pierre (qui doit être d u
maine et loire je crois)










Avatar
3stone
Salut,

"jerome crevecoeur"
Merci pour ta réponse mais je suis dans la procédure before update du
formulaire.


Mets cela dans l'après mise à jour !


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
jerome crevecoeur
merci pour ta réponse, mais on ne peut pas mettre à jour un champ de
l'enregistrement après mise à jour sur le formulaire.

j'ai essayé la mise à jour sur l'evenement before update des champs e t
j'ai les mêmes erreurs concernant les données déjà modifiées.

Je pense qu'il y a un temps de latence, ou problème de synchronisation
entre la mécanique interne de verrous d'access et la base SQL.

Je vais chercher du coté des triggers SQL SERVER dans ce cas.

A part si quelqu'un trouve une autre solution.


Salut,

"jerome crevecoeur"
Merci pour ta réponse mais je suis dans la procédure before update du
formulaire.


Mets cela dans l'après mise à jour !




Avatar
jerome crevecoeur
Bon, je flanche !

Même en passant par un trigger, Msaccess se perd dans les verrous.
Mes champs sont de type DateTime et la table est attachée à une
connexion ODBC.

Dans Enterprise Manager aucuns soucis pour mettre à jour mes
enregistrements.

Dans MsAccess c'est la cata dès que je veux mettre mon champ "datemaj" à
jour pour avoir la date de modification de l'enregistrement.

Serais-je le seul à avoir essayer de faire cela?
Quelquechose m'échappe


merci pour ta réponse, mais on ne peut pas mettre à jour un champ d e
l'enregistrement après mise à jour sur le formulaire.

j'ai essayé la mise à jour sur l'evenement before update des champs et
j'ai les mêmes erreurs concernant les données déjà modifiées.

Je pense qu'il y a un temps de latence, ou problème de synchronisatio n
entre la mécanique interne de verrous d'access et la base SQL.

Je vais chercher du coté des triggers SQL SERVER dans ce cas.

A part si quelqu'un trouve une autre solution.


Salut,

"jerome crevecoeur"
Merci pour ta réponse mais je suis dans la procédure before update du
formulaire.


Mets cela dans l'après mise à jour !







Avatar
3stone
re,

"jerome crevecoeur"
merci pour ta réponse, mais on ne peut pas mettre à jour un champ de
l'enregistrement après mise à jour sur le formulaire.


Mets le dans l'après mise à jour du formulaire !!!

;-)))


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
jerome crevecoeur
Merci Mr 3stone mais le problème semble plus complexe.
Ce que tu me dis est valable pour une base MSAccess mais avec SQl
Server, j'ai l'impression qu'il perd les pédales au niveau des verrous.
Et j'ai les messages précités qui apparaissent.

Ensuite modifier un champ aprés mise à jour du formulaire cela ne
fonctionnera jamais puisque c'est le serpent qui se mords la queue.


Cordialement


re,

"jerome crevecoeur"
merci pour ta réponse, mais on ne peut pas mettre à jour un champ d e
l'enregistrement après mise à jour sur le formulaire.


Mets le dans l'après mise à jour du formulaire !!!

;-)))




Avatar
3stone
re,

tu dis :

"jerome crevecoeur"
J'ai un champ caché qui contient la date de derniere modification de ma
ligne.

Une zone de texte caché ? Pourquoi caché ?
Il suffit que le champ fasse partie de la source, sans être lié
à une zone de texte.



Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.pfc_datemodification = Now
End Sub

Non, pas faire la mise à jour du textbox !

tu place le code dans l'après mise à jour...
pfc_datemodification = Now

essaies...

PS: Tu ne peux pas "modifier" le contenu d'une zone de texte,
même cachée, lors de l'événement "avant mise à jour"
puisque cela redéclenche... une mise à jour.
Mais une fois le formulaire passé, l'enregistrement peux
être modifié, lui.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
jerome crevecoeur
Merci 3stone
J'ai failli me braquer et puis , je me suis dit non, je vais relire avec
attention et patiemment ces instructions pour éviter que quelque chose
m'échappe.

Et cela fonctionne.

Pour résumé, j'ai ce code:
-----------------
Private Sub Form_BeforeInsert(Cancel As Integer)
Me.prf_datecreation = Now()
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.prf_datemodification = Now()
End Sub
------------------


je mettais des champs cachés car j'avais eu certains effets de bords su r
les versions antérieures d'access et c'était une (mauvaise) habitude que
j'avais prise.

Par contre je confirme qu'il faut mettre à jour le champ sur le Before
car j'ai essayé sur L'after et il est impossible de sauvegarder
l'enregistrement ensuite.

Merci de ta patience
Cordialement



re,

tu dis :

"jerome crevecoeur"
J'ai un champ caché qui contient la date de derniere modification de ma
ligne.

Une zone de texte caché ? Pourquoi caché ?
Il suffit que le champ fasse partie de la source, sans être l ié
à une zone de texte.



Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.pfc_datemodification = Now
End Sub

Non, pas faire la mise à jour du textbox !

tu place le code dans l'après mise à jour...
pfc_datemodification = Now

essaies...

PS: Tu ne peux pas "modifier" le contenu d'une zone de texte,
même cachée, lors de l'événement "avant mise à jour"
puisque cela redéclenche... une mise à jour.
Mais une fois le formulaire passé, l'enregistrement peux
être modifié, lui.



1 2