Jeg ved ikke om Delphi 2007, men jeg gjorde det samme med Delphi 7 og Oracle 8.
Her er ting, jeg gjorde:
- Indstil TAdoDataSet.CursorLocation ifølge forespørgsel:
- clUseClient hvis forespørgslen henter poster for GUI, og forespørgslen er relativt "simpel" - ingen gruppering eller sum
- clUseServer hvis forespørgslen har en form for aggregering (sum, gruppering, optælling)
- Indstil TAdoDataSet.CursorType ifølge forespørgsel:
- ctForwardOnly for rapporter, hvor du ikke behøver at rulle tilbage gennem datasættet - virker kun med clUseServer
- ctStatic til GUI. Dette er kun tilstand, der virker med clUseClient
- Indstil TAdoDataSet.LockType ifølge forespørgsel:
- ltReadOnly for hvert datasæt, der ikke bruges til redigering (gitre, rapporter)
- ltoptimistisk når poster sendes til databasen umiddelbart efter ændring (f.eks. brugerredigering af data på formular)
- ltBatchOptimistic når du ændrer et stort antal poster. Dette er til situationer, hvor du henter antallet af poster, derefter laver noget behandling på dem og derefter sender opdateringer til databasen i batch. Dette fungerer bedst kombineret med clUseClient og ctStatic.
- I min erfaring fungerede Microsoft OLEDB-udbyder til Oracle bedre end Oracle OleDb-udbyder. Det bør du teste.
Rediger: Tjek Fabricios kommentar om mulige klatproblemer. - Erstat TAdoQuery med TAdoDataSet . TAdoQuery blev oprettet til konvertering af apps fra BDE til ADO, men Borland/Codegear anbefaling var at bruge TAdoDataSet
- Tjek Oracle-forbindelsesstrengen igen for at være sikker på, at du ikke har netværksforsinkelse. Hvor længe varer det at oprette forbindelse til Oracle? Hvor lang er TnsPing?