Je ne sais pas pour Delphi 2007, mais j'ai fait la même chose avec Delphi 7 et Oracle 8.
Voici ce que j'ai fait :
- Définir TAdoDataSet.CursorLocation selon la requête :
- clUseClient si la requête récupère les enregistrements pour l'interface graphique et que la requête est relativement "simple" - pas de regroupement ni de somme
- clUseServer si la requête a une sorte d'agrégation (somme, regroupement, comptage)
- Définir TAdoDataSet.CursorType selon la requête :
- ctForwardOnly pour les rapports où vous n'avez pas besoin de faire défiler l'ensemble de données - fonctionne uniquement avec clUseServer
- ctStatique pour l'interface graphique. C'est le seul mode qui fonctionne avec clUseClient
- Définir TAdoDataSet.LockType selon la requête :
- ltReadOnly pour chaque ensemble de données qui n'est pas utilisé pour l'édition (grilles, rapports)
- ltOptimiste lorsque les enregistrements sont publiés dans la base de données immédiatement après la modification (par exemple, l'utilisateur modifie les données sur le formulaire)
- ltBatchOptimistic lorsque vous modifiez un grand nombre d'enregistrements. C'est pour les situations où vous récupérez un certain nombre d'enregistrements, puis effectuez un traitement dessus, puis envoyez des mises à jour à la base de données par lots. Cela fonctionne mieux en combinaison avec clUseClient et ctStatic.
- D'après mon expérience, le fournisseur Microsoft OLEDB pour Oracle fonctionnait mieux que le fournisseur Oracle OleDb. Tu devrais tester ça.
Modifier : Consultez le commentaire de Fabricio sur les éventuels problèmes de blob. - Remplacer TAdoQUery avec TAdoDataSet . TAdoQuery a été créé pour la conversion des applications de BDE en ADO, mais la recommandation de Borland/Codegear était d'utiliser TAdoDataSet
- Revérifiez la chaîne de connexion Oracle pour vous assurer que vous n'avez pas de latence réseau. Combien de temps dure la connexion à Oracle ? Combien de temps dure TnsPing ?