Bonjour,
Je souhaite d'abord remercier le travail formidable des concepteurs de ce site et des personnes qui l'entretiennent, le font vivre et tout cela bénévolement. Vous m'avez déjà permis de beaucoup apprendre par moi-même grâce à ces fabuleux FAQ et autre forums.
Mais je suis face à un problème que j'ai du mal à résoudre seul.
J'ai récemment récupéré la gestion et le développement d'un "programme" qui gère les visites médicales dans plusieurs centres de santé. Ce programme fonctionne avec Access. Il est de type client/serveur. Les "clients" utilisent aussi bien Access 2002, 2003 ou 2007. Les PC Serveur des différents centres sont rarement des "foudres de guerre" en terme de puissance, les réseaux sont en 100mbits/s et il arrive parfois que 7 ou 8 utilisateurs sollicitent le serveur en même temps au travers des requêtes du programme "client".
Dans la bdd centrale située sur le serveur, les dossiers de patients sont tous regroupés dans une table. Cette table contient +- 180 champs. Il peut y avoir jusqu'à 100.000 enregistrements (dossiers de patient) dans cette table.
Le soucis principal se situe dans les systèmes de recherche de dossiers. Je n'arrive pas à trouver un moyen efficace et surtout rapide pour retrouver un patient par son nom son prénom ou sa date de naissance (ou d'autres paramètres éventuels).
Les recherches à l'aide de liste déroulante contenant les champs de la table ne sont pas assez rapide, cela demande à chaque fois quelques secondes, voir quelques dizaines de secondes pour que la liste déroulante se place sur le bon nom. Pour les utilisateurs ce n'est pas acceptable pour des questions de timing.
La recherche multicritère n'est pas plus rapide (j'ai essayé plusieurs méthodes)
La solution trouvée actuellement n'est pas du tout optimale : juste avant l'ouverture d'un formulaire qui permet de faire une recherche de dossier, le programme "client" crée une table locale (dans son propre .mdb) contenant uniquement le nom, le prénom, la date de naissance et quelques autres informations. Dans ce cas, la recherche d'un nom à partir d'une liste déroulante est instantanée, mais il faut par contre attendre plusieurs minutes avant que la table soit complètement créée. Les utilisateurs ne sont pas vraiment ravis, surtout que cela doit se faire à de multiples endroits dans le programme "client".
J'ai fait des tests avec une table contenant seulement 4 champs, placée sur la bdd centrale située sur le serveur. La recherche via liste déroulante est plus rapide qu'avec la table aux 180 champs. Mais ce n'est toujours pas instantané, surtout si plusieurs utilisateurs travaillent en même temps.
Mes questions sont les suivantes :
- existe-t-il un moyen de faire des recherches instantanées dans mon cas. Le problème vient-il de la conception de la bdd? de la technologie Access? SQL Serveur serait-il la solution miracle?
-Sur sa page www.google.fr, comment fait Google pour afficher des propositions de résultat par menu déroulant de manière aussi rapide alors que sa base de donnée contient des trillions de possibilités? La solution est-elle dans l'utilisation d'un autre langage de programmation? Faudrait-il changer de technologie et se passer d'Access?
- est-il possible avec Access de faire une recherche à la google avec résultats sur plusieurs mots, dans plusieurs champs? Je souhaiterais arriver à un résultat proche de ça. C'est pour moi un but en soit, pour la pérennité du logiciel.
C'est beaucoup demandé, mais je souhaiterais avoir l'avis d'expert qui navigue ici.
D'avance merci pour ce débat.
-
Partager