dguehenn
Messages postés4Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention15 novembre 2006 15 nov. 2006 à 09:29
Pour résoudre le problème lié au Locate et AppendRecord dans ce cadre là, il faut mettre à jour la version du driver ODBC d'Oracle en version 9.2.0.7.0
dguehenn
Messages postés4Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention15 novembre 2006 23 oct. 2006 à 09:22
Bonjour,
L'ensemble de mon application utilise la méthode du Locate, je prendrai
beaucoup trop de temps à modifier mon code pour exécuter une requête à la
place.
Pour la migration de mon application de Delphi 7 vers Delphi 2006, j'ai fait un
upgrade, mais j'ai rencontré deux problèmes lors de cette migration : Le
problème de Locate et le problème de quickreport.
dataconcept
Messages postés6Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention27 avril 2009 6 nov. 2007 à 04:21
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é.
dataconcept
Messages postés6Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention27 avril 2009 6 nov. 2007 à 04:21
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é.