Ik weet niets over Delphi 2007, maar ik deed hetzelfde met Delphi 7 en Oracle 8.
Dit zijn dingen die ik heb gedaan:
- Stel TAdoDataSet.CursorLocation in volgens vraag:
- clUseClient als query records voor GUI ophaalt en query relatief "eenvoudig" is - geen groepering of som
- clUseServer als de zoekopdracht een soort aggregatie heeft (som, groepering, telling)
- Stel TAdoDataSet.CursorType in volgens vraag:
- ctForwardOnly voor rapporten waarbij u niet terug door de dataset hoeft te scrollen - werkt alleen met clUseServer
- ctStatic voor GUI. Dit is de enige modus die werkt met clUseClient
- Stel TAdoDataSet.LockType in volgens vraag:
- ltReadOnly voor elke dataset die niet wordt gebruikt voor bewerking (rasters, rapporten)
- ltOptimistisch wanneer records direct na wijziging in de database worden gepost (bijv. gebruiker bewerkt gegevens op formulier)
- ltBatchOptimistic wanneer u een groot aantal records wijzigt. Dit is voor situaties waarin u een aantal records ophaalt, er vervolgens wat bewerkingen op uitvoert en vervolgens batchgewijs updates naar de database verzendt. Dit werkt het beste in combinatie met clUseClient en ctStatic.
- In mijn ervaring werkte de Microsoft OLEDB-provider voor Oracle beter dan de Oracle OleDb-provider. Dat zou je moeten testen.
Bewerken: Check Fabricio's opmerking over mogelijke blob-problemen. - Vervang TAdoQuery met TAdoDataSet . TAdoQuery is gemaakt voor de conversie van apps van BDE naar ADO, maar de aanbeveling van Borland/Codegear was om TAdoDataSet te gebruiken
- Controleer de Oracle-verbindingsreeks opnieuw om er zeker van te zijn dat u geen netwerklatentie heeft. Hoe lang duurt het om verbinding te maken met Oracle? Hoe lang duurt TnsPing?