Bonjour,
Il y a un BUG dans la fonction locate. ce bug provoque une lenteur croissante lors de recherche sur des tables uniquement lorsque ces tables sont partagées en réseau par plus d'un utilisateur.
A partir de DELPHI 5, le BDE à subit sa dernière évolution, on lisait dans la doc qu'i était conseillé d'abandonner la fonction GotoKey au profit de locate pour effectuer des recherches dans une table.
Depuis j'ai utiliser locate pour toutes mes applications.
Voici mes constatations :
Dans toutes mes applications BDE j'utilise le format DBase(level7), sont avantage très robuste et facile à maintenir
Locate fonctionne très bien lorsque vous effectuez des recherches en local ou sur une table distante dans un dossier partagé
Lorsqu'il y a plus d'un utilisateur effectuant une recherche sur la même table, un ralentissement de la recherche se produit, ce ralentissement va croissant jusqu'à l'impossibilité d'utiliser l'application.
Ce phénomène se produit sur les tables au format dbf (pas tester sur Paradox) il est possible qu'il se produise également sur d'autre format de fichier.
1- Plus la taille de la table est importante et plus le ralentissement devient conséquent.
2- Lorsque vous effectuer des recherches sur plusieurs grosses tables ca devient catastrophique
3- Cela uniquement lorsque plusieurs utilisateurs effectue des recherches sur ces tables en réseau, avec un utilisateur pas de problème.
J'avais constaté ces phénomène de ralentissement, mais je pensais que c'était un problème hardware puis finalement je pensais que le BDE n'étais pas adapté aux grosses base en réseau.
Lorsque j'ai rencontré un client qui utilise un encore un de mes logiciel développer en delphi 3, sur des très grosses tables en réseau, celui-ci me dit qu'il ne constate aucun ralentissement, ceci à été le déclic qui à fait que j'ai trouver la cause.
1- Mon application delphi3 avait été recompilé en delphi5 puis 7 : donc ce ne provenait pas de la version de delphi ni du bde, après avoir analyser mon code, j'ai constater que depuis j'utilisais Locate à la place de GotoKey pour mes recherches, après avoir mis des points de suivis avant et apres une fonction locate sur une application réseau, j'ai constater le phénome de ralentissement uniquement lorsque la base était partagée avec d'autres
Après avoir remplacé mes locate par des gotokey, les ralentissements disparaissais.
Ceci est bien la preuve du BUG de la fonction Locate. et comme le BDE n'est plus maintenu, pas de correction disponible...
Après avoir remplacer tous les Locate :
1- recherche sur un champ unique indexé par des Gotokey
2- recherche multi champ par un filtre sur la table ou une portée SetRangestart
mon logiciel tourne nikel...
Conseil : ne pas remplacer des locate par un Sql car la réponse est plus lente que Gotokey ou une portée, sql est très rapide sur unn ensemble de résultat mais pas sur un résultat comportant que un enregistrement.
Voilà, depuis lors, j'utilise toujours BDE et des tables Dbase sur des applications réseau avec +- 10 users et des tables de plus ou moin 100000 records (tailles de mes tables 5 à 10 megas) sans soucis de rapidité.
Vive le BDE, les SGBD j'y passe pas encore....

bobo