OVH Cloud OVH Cloud

CopyObject

11 réponses
Avatar
Guy
Bonjour à tous,

J'ai une base de données Access multi utilisateur qui est sur un serveur. Il
y a un bouton qui permet de visualiser des état à l'écran. Certains de ces
états sont identiques mis à part les données à y inscrire donc ils sont
dupliqué via CopyObject.
Avec un utilisateur, aucun problème. Mais lorsque 2 utilisateurs utilise la
fonctionalité simultannément, la base de donné "crash" et devient même
corrompue quelques fois.
Es-ce parce que l'état est en mémoire, lors de la copie via copyObject, que
l'autre utilisateur fait "crasher la base de donnée". Quel serait le moyen de
palier à ce problème ?

Merci à l'avance pour vos réponse

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

Pourquoi faudrait-il faire un CopyObject pour visualiser un état?

Ta base de données doit être fractionnée en une table principale sur le
serveur qui contient les données (tables) et une base frontale située sur
chaque poste contenant les autres objets. les tables de la table principales
sont attachées dans chaque base frontale.

--
@+Raymond Access MVP

http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy" a écrit dans le message de news:

Bonjour à tous,

J'ai une base de données Access multi utilisateur qui est sur un serveur.
Il
y a un bouton qui permet de visualiser des état à l'écran. Certains de ces
états sont identiques mis à part les données à y inscrire donc ils sont
dupliqué via CopyObject.
Avec un utilisateur, aucun problème. Mais lorsque 2 utilisateurs utilise
la
fonctionalité simultannément, la base de donné "crash" et devient même
corrompue quelques fois.
Es-ce parce que l'état est en mémoire, lors de la copie via copyObject,
que
l'autre utilisateur fait "crasher la base de donnée". Quel serait le moyen
de
palier à ce problème ?

Merci à l'avance pour vos réponse



Avatar
Guy
Salut,
Je dois faire un copy object car le même état doit être ouvert plusieurs
fois, avec des données différentes et tous les états doivent restés affichés
en apperçu avant impression en même temps.
Avatar
Raymond [mvp]
Comment fais-tu ton copyobject . je soupçonne que deux états doivent avoir
le même nom et qu'un état affiché est supprimé par un autre.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy" a écrit dans le message de news:

Salut,
Je dois faire un copy object car le même état doit être ouvert plusieurs
fois, avec des données différentes et tous les états doivent restés
affichés
en apperçu avant impression en même temps.



Avatar
Guy
non ce n'est pas le cas.

J'ai fait de nouveau test et réussi a capter l'erreur. Lorsque la méthode
copyObject est exécutée l'erreur 2501 (L'action CopyObject à été annulé.) se
produit, et ce, seulement lorsque 2 utilisateurs sont connectés sur la base
de données en même temps. S'il n'y a qu'un utilisateur dans la BD, tout est
correct, le CopyObject fonctionne très bien.

Est-ce que CopyObject sur un objet X n'est possible que s'il n'y a qu'un
utilisateur de connecté à une base ???
Avatar
Raymond [mvp]
non, mais quelle est la commande ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy" a écrit dans le message de news:

non ce n'est pas le cas.

J'ai fait de nouveau test et réussi a capter l'erreur. Lorsque la méthode
copyObject est exécutée l'erreur 2501 (L'action CopyObject à été annulé.)
se
produit, et ce, seulement lorsque 2 utilisateurs sont connectés sur la
base
de données en même temps. S'il n'y a qu'un utilisateur dans la BD, tout
est
correct, le CopyObject fonctionne très bien.

Est-ce que CopyObject sur un objet X n'est possible que s'il n'y a qu'un
utilisateur de connecté à une base ???


Avatar
Guy
Je ne comprend pas ce que tu veux dire...

en tous cas, voici la partie de mon code qui fait le copy object

' Si je détecte que StrName est ouvert(en preview)je fais une copie pour que
strname reste affiché et ne soit pas écrasé par mon nouveau rapport.

If SysCmd(acSysCmdGetObjectState, acReport, strName) = acObjStateOpen Then
intReportIndex = intReportIndex + 1
strReportName = "tmp_" & Format(Date, "yyyymmdd") & "_" &
glbCodeUsagerXP + "_" + Format(intReportIndex, "0000")
DoCmd.CopyObject , strReportName, acReport, strName
End If

DoCmd.OpenReport strReportName, acViewPreview, strFiltre, strWhere
Avatar
Raymond [mvp]
il est possible selon l'instant de connexion des utilisateurs que le test du
report ouvert, soit fermé pour les deux et que le même report soit lancé ce
qui provoquerait l'erreur. si tu passes dans la fonction dans le if tu ne
peux pas avoir d'erreur.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy" a écrit dans le message de news:

Je ne comprend pas ce que tu veux dire...

en tous cas, voici la partie de mon code qui fait le copy object

' Si je détecte que StrName est ouvert(en preview)je fais une copie pour
que
strname reste affiché et ne soit pas écrasé par mon nouveau rapport.

If SysCmd(acSysCmdGetObjectState, acReport, strName) = acObjStateOpen
Then
intReportIndex = intReportIndex + 1
strReportName = "tmp_" & Format(Date, "yyyymmdd") & "_" &
glbCodeUsagerXP + "_" + Format(intReportIndex, "0000")
DoCmd.CopyObject , strReportName, acReport, strName
End If

DoCmd.OpenReport strReportName, acViewPreview, strFiltre, strWhere


Avatar
Guy
je comprend mais j'y suis allé en debug...
il entre dans le if, et donne l'erreur quand il passe dans l'instruction
DoCmd.CopyObject...
Avatar
Raymond [mvp]
les numéros générés sont-ils identiques ou différents ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy" a écrit dans le message de news:

je comprend mais j'y suis allé en debug...
il entre dans le if, et donne l'erreur quand il passe dans l'instruction
DoCmd.CopyObject...


Avatar
Guy
identiques... l'erreur générée est 2501
qui est : L'action CopyObject à été annulée.
1 2