je vois que la période est à l'action VB sur Access, alors je me lance par
rapport à un problème d'accès simultané à Access
1. Contexte
VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée
Une base access placée sur un serveur donc commun, est appelée par
plusiseurs instances d'un même programme, chacune étant sur un poste du
réseau.
Le nombre d'accès simultanés (réellement) est 2 à 3 postes.
L'action qui me pose problème est la suivante .
Je veux enregistrer des données en deux temps (en fait les médicaments d'une
ordonnance..).
L'exigence est d'avoir un numéro unique d'ordonnance .
ma démarche est la suivante .
J'interroge une table qui contient les numéros déjà attribués : dans cette
table il y a bien sur un champ automatique, mais ce n'est pas celui la qui
m'intéresse.
Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre pour
le jour choisi.
Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre ,
l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver.
je récupère bien sur aussi le numéro interne (champ automatique) qui me
servira à lier aux autres tables.
Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement,
mais c'est déjà trop, que de deux postes différents il y ait la même demande
(pour ce numéro dans la journée) au même moment ..
Les deux versions prennent alors le même numéro d'ordonnance ce qui est
inconcevable, car interdit.
3. Quels remedes
L'idée première à laquelle je pense est de faire un accès qui bloque les
autres tentatives d'accès à la table incriminée...
Comment réaliser cela ? Comment faire patienter les autres demandes, le
temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte complète
du programmes est de faire une apllication client-serveur (2T ou 3T). C'est
donc le serveur qui gererait, l'une à la suite de l'autres les différentes
demandes...
Mais là aussi, je regarde un peu comment cela fonctionne.
J'ai trouvé sur le net, quelques programmes client-serveur d'accès a access.
mais je nage un peu plus encore..: surtout la partie justement de traitement
des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en DAO,
comment restreindre l'accès à une table, et en parallèle, comment gérer
l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de me
préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment
gérer les erreurs, car pour l'instant mon programme ne les gère pas et j'ai
de temps en temps des plantades qui me font perdre des données . Là aussi un
exemple, ou une idée feraient mon bonheur ;o)
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
Patrick JONIEC
Bonjour
J'ai rencontré ce problème dans un programme de gestion commerciale en réseau sur 8 postes, avec attribution d'un numéro de devis (donc 100% identique).
Lors de l'attribution du numéro : - j'ouvre la table en mode exclusif : OpenRecordset(table,dbOpenDynaset, dbDenyRead + dbDenyWrite) - j'attribu le numéro - je ferme la table, et la réouvre en mode normal - reprendre l'enregistrement nouvellement créé - continuer le reste du traitement
Par contre, la gestion des erreur est impérative, car sinon, si un autre utilisateur essaye d'accéder à la table, il aura une erreur (table vérouillée par un autre utilisateur) pour cela, il faut utiliser une boucle du type :
on error resume next do err.clear Action sur la base if err.number<>0 then if msgbox("erreur " & err.number & " " & err.description & vbcrlf & "Voulez-vous ré-essayer ?")=vbno then exit loop endif else exit loop endif loop while true if err.number<>0 then traiter le cas où l'action n'as pas été réalisée pour éviter que le reste du programme provoque d'autres erreurs endif
"Driss HANIB" a écrit dans le message de news:%
Bonjour,
je vois que la période est à l'action VB sur Access, alors je me lance par rapport à un problème d'accès simultané à Access
1. Contexte VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée Une base access placée sur un serveur donc commun, est appelée par plusiseurs instances d'un même programme, chacune étant sur un poste du réseau. Le nombre d'accès simultanés (réellement) est 2 à 3 postes. L'action qui me pose problème est la suivante . Je veux enregistrer des données en deux temps (en fait les médicaments d'une ordonnance..). L'exigence est d'avoir un numéro unique d'ordonnance . ma démarche est la suivante . J'interroge une table qui contient les numéros déjà attribués : dans cette table il y a bien sur un champ automatique, mais ce n'est pas celui la qui m'intéresse. Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre pour le jour choisi. Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre , l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver. je récupère bien sur aussi le numéro interne (champ automatique) qui me servira à lier aux autres tables. Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement, mais c'est déjà trop, que de deux postes différents il y ait la même demande (pour ce numéro dans la journée) au même moment .. Les deux versions prennent alors le même numéro d'ordonnance ce qui est inconcevable, car interdit.
3. Quels remedes L'idée première à laquelle je pense est de faire un accès qui bloque les autres tentatives d'accès à la table incriminée... Comment réaliser cela ? Comment faire patienter les autres demandes, le temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte complète du programmes est de faire une apllication client-serveur (2T ou 3T). C'est donc le serveur qui gererait, l'une à la suite de l'autres les différentes demandes... Mais là aussi, je regarde un peu comment cela fonctionne. J'ai trouvé sur le net, quelques programmes client-serveur d'accès a access. mais je nage un peu plus encore..: surtout la partie justement de traitement des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en DAO, comment restreindre l'accès à une table, et en parallèle, comment gérer l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de me préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment gérer les erreurs, car pour l'instant mon programme ne les gère pas et j'ai de temps en temps des plantades qui me font perdre des données . Là aussi un exemple, ou une idée feraient mon bonheur ;o)
Merci
Driss
Bonjour
J'ai rencontré ce problème dans un programme de gestion commerciale en
réseau sur 8 postes, avec attribution d'un numéro de devis (donc 100%
identique).
Lors de l'attribution du numéro :
- j'ouvre la table en mode exclusif : OpenRecordset(table,dbOpenDynaset,
dbDenyRead + dbDenyWrite)
- j'attribu le numéro
- je ferme la table, et la réouvre en mode normal
- reprendre l'enregistrement nouvellement créé
- continuer le reste du traitement
Par contre, la gestion des erreur est impérative, car sinon, si un autre
utilisateur essaye d'accéder à la table, il aura une erreur
(table vérouillée par un autre utilisateur)
pour cela, il faut utiliser une boucle du type :
on error resume next
do
err.clear
Action sur la base
if err.number<>0 then
if msgbox("erreur " & err.number & " " & err.description & vbcrlf &
"Voulez-vous ré-essayer ?")=vbno then
exit loop
endif
else
exit loop
endif
loop while true
if err.number<>0 then
traiter le cas où l'action n'as pas été réalisée pour éviter que le reste
du programme provoque d'autres erreurs
endif
"Driss HANIB" <dhanib@club-internet.fr> a écrit dans le message de
news:%23knH2NyuIHA.4876@TK2MSFTNGP02.phx.gbl...
Bonjour,
je vois que la période est à l'action VB sur Access, alors je me lance par
rapport à un problème d'accès simultané à Access
1. Contexte
VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée
Une base access placée sur un serveur donc commun, est appelée par
plusiseurs instances d'un même programme, chacune étant sur un poste du
réseau.
Le nombre d'accès simultanés (réellement) est 2 à 3 postes.
L'action qui me pose problème est la suivante .
Je veux enregistrer des données en deux temps (en fait les médicaments
d'une ordonnance..).
L'exigence est d'avoir un numéro unique d'ordonnance .
ma démarche est la suivante .
J'interroge une table qui contient les numéros déjà attribués : dans cette
table il y a bien sur un champ automatique, mais ce n'est pas celui la qui
m'intéresse.
Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre
pour le jour choisi.
Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre ,
l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver.
je récupère bien sur aussi le numéro interne (champ automatique) qui me
servira à lier aux autres tables.
Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement,
mais c'est déjà trop, que de deux postes différents il y ait la même
demande (pour ce numéro dans la journée) au même moment ..
Les deux versions prennent alors le même numéro d'ordonnance ce qui est
inconcevable, car interdit.
3. Quels remedes
L'idée première à laquelle je pense est de faire un accès qui bloque les
autres tentatives d'accès à la table incriminée...
Comment réaliser cela ? Comment faire patienter les autres demandes, le
temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte
complète du programmes est de faire une apllication client-serveur (2T ou
3T). C'est donc le serveur qui gererait, l'une à la suite de l'autres les
différentes demandes...
Mais là aussi, je regarde un peu comment cela fonctionne.
J'ai trouvé sur le net, quelques programmes client-serveur d'accès a
access. mais je nage un peu plus encore..: surtout la partie justement de
traitement des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en
DAO, comment restreindre l'accès à une table, et en parallèle, comment
gérer l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de me
préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment
gérer les erreurs, car pour l'instant mon programme ne les gère pas et
j'ai de temps en temps des plantades qui me font perdre des données . Là
aussi un exemple, ou une idée feraient mon bonheur ;o)
J'ai rencontré ce problème dans un programme de gestion commerciale en réseau sur 8 postes, avec attribution d'un numéro de devis (donc 100% identique).
Lors de l'attribution du numéro : - j'ouvre la table en mode exclusif : OpenRecordset(table,dbOpenDynaset, dbDenyRead + dbDenyWrite) - j'attribu le numéro - je ferme la table, et la réouvre en mode normal - reprendre l'enregistrement nouvellement créé - continuer le reste du traitement
Par contre, la gestion des erreur est impérative, car sinon, si un autre utilisateur essaye d'accéder à la table, il aura une erreur (table vérouillée par un autre utilisateur) pour cela, il faut utiliser une boucle du type :
on error resume next do err.clear Action sur la base if err.number<>0 then if msgbox("erreur " & err.number & " " & err.description & vbcrlf & "Voulez-vous ré-essayer ?")=vbno then exit loop endif else exit loop endif loop while true if err.number<>0 then traiter le cas où l'action n'as pas été réalisée pour éviter que le reste du programme provoque d'autres erreurs endif
"Driss HANIB" a écrit dans le message de news:%
Bonjour,
je vois que la période est à l'action VB sur Access, alors je me lance par rapport à un problème d'accès simultané à Access
1. Contexte VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée Une base access placée sur un serveur donc commun, est appelée par plusiseurs instances d'un même programme, chacune étant sur un poste du réseau. Le nombre d'accès simultanés (réellement) est 2 à 3 postes. L'action qui me pose problème est la suivante . Je veux enregistrer des données en deux temps (en fait les médicaments d'une ordonnance..). L'exigence est d'avoir un numéro unique d'ordonnance . ma démarche est la suivante . J'interroge une table qui contient les numéros déjà attribués : dans cette table il y a bien sur un champ automatique, mais ce n'est pas celui la qui m'intéresse. Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre pour le jour choisi. Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre , l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver. je récupère bien sur aussi le numéro interne (champ automatique) qui me servira à lier aux autres tables. Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement, mais c'est déjà trop, que de deux postes différents il y ait la même demande (pour ce numéro dans la journée) au même moment .. Les deux versions prennent alors le même numéro d'ordonnance ce qui est inconcevable, car interdit.
3. Quels remedes L'idée première à laquelle je pense est de faire un accès qui bloque les autres tentatives d'accès à la table incriminée... Comment réaliser cela ? Comment faire patienter les autres demandes, le temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte complète du programmes est de faire une apllication client-serveur (2T ou 3T). C'est donc le serveur qui gererait, l'une à la suite de l'autres les différentes demandes... Mais là aussi, je regarde un peu comment cela fonctionne. J'ai trouvé sur le net, quelques programmes client-serveur d'accès a access. mais je nage un peu plus encore..: surtout la partie justement de traitement des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en DAO, comment restreindre l'accès à une table, et en parallèle, comment gérer l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de me préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment gérer les erreurs, car pour l'instant mon programme ne les gère pas et j'ai de temps en temps des plantades qui me font perdre des données . Là aussi un exemple, ou une idée feraient mon bonheur ;o)
Merci
Driss
Driss HANIB
Merci Patrick,
cela ressemble effectivement à ce qu'il me faut... je vais étudier cela et le mettre en place. Si tu as d'autres données n'hésites pas
Driss
"Patrick JONIEC" a écrit dans le message de news:
Bonjour
J'ai rencontré ce problème dans un programme de gestion commerciale en réseau sur 8 postes, avec attribution d'un numéro de devis (donc 100% identique).
Lors de l'attribution du numéro : - j'ouvre la table en mode exclusif : OpenRecordset(table,dbOpenDynaset, dbDenyRead + dbDenyWrite) - j'attribu le numéro - je ferme la table, et la réouvre en mode normal - reprendre l'enregistrement nouvellement créé - continuer le reste du traitement
Par contre, la gestion des erreur est impérative, car sinon, si un autre utilisateur essaye d'accéder à la table, il aura une erreur (table vérouillée par un autre utilisateur) pour cela, il faut utiliser une boucle du type :
on error resume next do err.clear Action sur la base if err.number<>0 then if msgbox("erreur " & err.number & " " & err.description & vbcrlf & "Voulez-vous ré-essayer ?")=vbno then exit loop endif else exit loop endif loop while true if err.number<>0 then traiter le cas où l'action n'as pas été réalisée pour éviter que le reste du programme provoque d'autres erreurs endif
"Driss HANIB" a écrit dans le message de news:%
Bonjour,
je vois que la période est à l'action VB sur Access, alors je me lance par rapport à un problème d'accès simultané à Access
1. Contexte VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée Une base access placée sur un serveur donc commun, est appelée par plusiseurs instances d'un même programme, chacune étant sur un poste du réseau. Le nombre d'accès simultanés (réellement) est 2 à 3 postes. L'action qui me pose problème est la suivante . Je veux enregistrer des données en deux temps (en fait les médicaments d'une ordonnance..). L'exigence est d'avoir un numéro unique d'ordonnance . ma démarche est la suivante . J'interroge une table qui contient les numéros déjà attribués : dans cette table il y a bien sur un champ automatique, mais ce n'est pas celui la qui m'intéresse. Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre pour le jour choisi. Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre , l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver. je récupère bien sur aussi le numéro interne (champ automatique) qui me servira à lier aux autres tables. Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement, mais c'est déjà trop, que de deux postes différents il y ait la même demande (pour ce numéro dans la journée) au même moment .. Les deux versions prennent alors le même numéro d'ordonnance ce qui est inconcevable, car interdit.
3. Quels remedes L'idée première à laquelle je pense est de faire un accès qui bloque les autres tentatives d'accès à la table incriminée... Comment réaliser cela ? Comment faire patienter les autres demandes, le temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte complète du programmes est de faire une apllication client-serveur (2T ou 3T). C'est donc le serveur qui gererait, l'une à la suite de l'autres les différentes demandes... Mais là aussi, je regarde un peu comment cela fonctionne. J'ai trouvé sur le net, quelques programmes client-serveur d'accès a access. mais je nage un peu plus encore..: surtout la partie justement de traitement des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en DAO, comment restreindre l'accès à une table, et en parallèle, comment gérer l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de me préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment gérer les erreurs, car pour l'instant mon programme ne les gère pas et j'ai de temps en temps des plantades qui me font perdre des données . Là aussi un exemple, ou une idée feraient mon bonheur ;o)
Merci
Driss
Merci Patrick,
cela ressemble effectivement à ce qu'il me faut...
je vais étudier cela et le mettre en place.
Si tu as d'autres données n'hésites pas
Driss
"Patrick JONIEC" <patrick@vip-organisation.com> a écrit dans le message de
news: 5C4BAF3B-AD43-4EC4-8343-ABD7BBA437C3@microsoft.com...
Bonjour
J'ai rencontré ce problème dans un programme de gestion commerciale en
réseau sur 8 postes, avec attribution d'un numéro de devis (donc 100%
identique).
Lors de l'attribution du numéro :
- j'ouvre la table en mode exclusif : OpenRecordset(table,dbOpenDynaset,
dbDenyRead + dbDenyWrite)
- j'attribu le numéro
- je ferme la table, et la réouvre en mode normal
- reprendre l'enregistrement nouvellement créé
- continuer le reste du traitement
Par contre, la gestion des erreur est impérative, car sinon, si un autre
utilisateur essaye d'accéder à la table, il aura une erreur
(table vérouillée par un autre utilisateur)
pour cela, il faut utiliser une boucle du type :
on error resume next
do
err.clear
Action sur la base
if err.number<>0 then
if msgbox("erreur " & err.number & " " & err.description & vbcrlf &
"Voulez-vous ré-essayer ?")=vbno then
exit loop
endif
else
exit loop
endif
loop while true
if err.number<>0 then
traiter le cas où l'action n'as pas été réalisée pour éviter que le
reste du programme provoque d'autres erreurs
endif
"Driss HANIB" <dhanib@club-internet.fr> a écrit dans le message de
news:%23knH2NyuIHA.4876@TK2MSFTNGP02.phx.gbl...
Bonjour,
je vois que la période est à l'action VB sur Access, alors je me lance
par rapport à un problème d'accès simultané à Access
1. Contexte
VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée
Une base access placée sur un serveur donc commun, est appelée par
plusiseurs instances d'un même programme, chacune étant sur un poste du
réseau.
Le nombre d'accès simultanés (réellement) est 2 à 3 postes.
L'action qui me pose problème est la suivante .
Je veux enregistrer des données en deux temps (en fait les médicaments
d'une ordonnance..).
L'exigence est d'avoir un numéro unique d'ordonnance .
ma démarche est la suivante .
J'interroge une table qui contient les numéros déjà attribués : dans
cette table il y a bien sur un champ automatique, mais ce n'est pas celui
la qui m'intéresse.
Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre
pour le jour choisi.
Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre ,
l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver.
je récupère bien sur aussi le numéro interne (champ automatique) qui me
servira à lier aux autres tables.
Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement,
mais c'est déjà trop, que de deux postes différents il y ait la même
demande (pour ce numéro dans la journée) au même moment ..
Les deux versions prennent alors le même numéro d'ordonnance ce qui est
inconcevable, car interdit.
3. Quels remedes
L'idée première à laquelle je pense est de faire un accès qui bloque les
autres tentatives d'accès à la table incriminée...
Comment réaliser cela ? Comment faire patienter les autres demandes, le
temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte
complète du programmes est de faire une apllication client-serveur (2T ou
3T). C'est donc le serveur qui gererait, l'une à la suite de l'autres les
différentes demandes...
Mais là aussi, je regarde un peu comment cela fonctionne.
J'ai trouvé sur le net, quelques programmes client-serveur d'accès a
access. mais je nage un peu plus encore..: surtout la partie justement de
traitement des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en
DAO, comment restreindre l'accès à une table, et en parallèle, comment
gérer l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de
me préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment
gérer les erreurs, car pour l'instant mon programme ne les gère pas et
j'ai de temps en temps des plantades qui me font perdre des données . Là
aussi un exemple, ou une idée feraient mon bonheur ;o)
cela ressemble effectivement à ce qu'il me faut... je vais étudier cela et le mettre en place. Si tu as d'autres données n'hésites pas
Driss
"Patrick JONIEC" a écrit dans le message de news:
Bonjour
J'ai rencontré ce problème dans un programme de gestion commerciale en réseau sur 8 postes, avec attribution d'un numéro de devis (donc 100% identique).
Lors de l'attribution du numéro : - j'ouvre la table en mode exclusif : OpenRecordset(table,dbOpenDynaset, dbDenyRead + dbDenyWrite) - j'attribu le numéro - je ferme la table, et la réouvre en mode normal - reprendre l'enregistrement nouvellement créé - continuer le reste du traitement
Par contre, la gestion des erreur est impérative, car sinon, si un autre utilisateur essaye d'accéder à la table, il aura une erreur (table vérouillée par un autre utilisateur) pour cela, il faut utiliser une boucle du type :
on error resume next do err.clear Action sur la base if err.number<>0 then if msgbox("erreur " & err.number & " " & err.description & vbcrlf & "Voulez-vous ré-essayer ?")=vbno then exit loop endif else exit loop endif loop while true if err.number<>0 then traiter le cas où l'action n'as pas été réalisée pour éviter que le reste du programme provoque d'autres erreurs endif
"Driss HANIB" a écrit dans le message de news:%
Bonjour,
je vois que la période est à l'action VB sur Access, alors je me lance par rapport à un problème d'accès simultané à Access
1. Contexte VB6 SP3 et Access97 par DAO (et oui encore..)
2. Action demandée Une base access placée sur un serveur donc commun, est appelée par plusiseurs instances d'un même programme, chacune étant sur un poste du réseau. Le nombre d'accès simultanés (réellement) est 2 à 3 postes. L'action qui me pose problème est la suivante . Je veux enregistrer des données en deux temps (en fait les médicaments d'une ordonnance..). L'exigence est d'avoir un numéro unique d'ordonnance . ma démarche est la suivante . J'interroge une table qui contient les numéros déjà attribués : dans cette table il y a bien sur un champ automatique, mais ce n'est pas celui la qui m'intéresse. Le numéro de l'ordonnance comprend la date du jour et un numéro d'ordre pour le jour choisi. Je dois donc, pour le jour choisi, rechercher le dernier numéro d'ordre , l'incrémenter et ensuite enregistrer ce numéro d'ordre pour le réserver. je récupère bien sur aussi le numéro interne (champ automatique) qui me servira à lier aux autres tables. Toute l'action fonctionne et est utilisée depuis plusieurs années..
Toute ? Non .. car (non pas un village gaulois) il arrive, très rarement, mais c'est déjà trop, que de deux postes différents il y ait la même demande (pour ce numéro dans la journée) au même moment .. Les deux versions prennent alors le même numéro d'ordonnance ce qui est inconcevable, car interdit.
3. Quels remedes L'idée première à laquelle je pense est de faire un accès qui bloque les autres tentatives d'accès à la table incriminée... Comment réaliser cela ? Comment faire patienter les autres demandes, le temps que la première requête soit terminée..? (gestion des erreurs)
L'autre idée à la quelle je pense également, mais c'est une refonte complète du programmes est de faire une apllication client-serveur (2T ou 3T). C'est donc le serveur qui gererait, l'une à la suite de l'autres les différentes demandes... Mais là aussi, je regarde un peu comment cela fonctionne. J'ai trouvé sur le net, quelques programmes client-serveur d'accès a access. mais je nage un peu plus encore..: surtout la partie justement de traitement des demandes, les unes après les autres..
Donc, pour résumer, ma première demande concerne ma première idée : en DAO, comment restreindre l'accès à une table, et en parallèle, comment gérer l'attente par les autres demandeurs...
Mais vos pistes pour le client-serveur m'intéressent également, afin de me préparer psychologiquement.
Autre question générale, lors de l'accès à une base de données, comment gérer les erreurs, car pour l'instant mon programme ne les gère pas et j'ai de temps en temps des plantades qui me font perdre des données . Là aussi un exemple, ou une idée feraient mon bonheur ;o)