Jag vet inte om Delphi 2007, men jag gjorde samma sak med Delphi 7 och Oracle 8.
Här är saker jag gjorde:
- Ange TAdoDataSet.CursorLocation enligt fråga:
- clUseClient om frågan hämtar poster för GUI och frågan är relativt "enkel" - ingen gruppering eller summa
- clUseServer om frågan har någon form av aggregering (summa, gruppering, räkning)
- Ange TAdoDataSet.CursorType enligt fråga:
- ctForwardOnly för rapporter där du inte behöver bläddra tillbaka genom datasetet - fungerar bara med clUseServer
- ctStatic för GUI. Detta är bara läge som fungerar med clUseClient
- Ställ in TAdoDataSet.LockType enligt fråga:
- ltReadOnly för varje datauppsättning som inte används för redigering (rutnät, rapporter)
- ltoptimistisk när poster läggs upp i databasen omedelbart efter ändring (t.ex. användarredigering av data på formulär)
- ltBatchOptimistic när du ändrar ett stort antal poster. Detta är för situationer där du hämtar antal poster, sedan bearbetar dem och sedan skickar uppdateringar till databasen i batch. Detta fungerar bäst i kombination med clUseClient och ctStatic.
- I min erfarenhet fungerade Microsoft OLEDB-leverantör för Oracle bättre än Oracle OleDb-leverantör. Det borde du testa.
Redigera: Kolla Fabricios kommentar om möjliga blobproblem. - Ersätt TAdoQuery med TAdoDataSet . TAdoQuery skapades för konvertering av appar från BDE till ADO, men Borland/Codegears rekommendation var att använda TAdoDataSet
- Kontrollera Oracle-anslutningssträngen igen för att vara säker på att du inte har nätverkslatens. Hur länge varar det att ansluta till Oracle? Hur lång är TnsPing?