07. maj 2008 - 09:24Der er
5 kommentarer og 1 løsning
ODBC adgang henter ikke alle data ved at loope gennem records
Jeg programmerer fra LotusScript (IBM Lotus Notes og Domino) op imod et medlemsregister placeret på en Oracle10 server. Der er ca. 8000 poster med 30 kolonner.
Problemet er at loopen stopper efter ca. 3000 poster, når jeg laver en SELECT * Når jeg udpeger nogle på kolonner, så kører den igennem alle records.
Er det almindelig opførsel? Kan der justeres på det? Er der en buffer involveret?
Nej, det kan jeg ikke være sikker på. Men det lader til at være afhængig af mængden af kolonner jeg SELECT'er. Som sagt er det 30 kolonner. Hvis jeg kun vælger 3 kolonner i SELECT, så looper den fint.
Koden er her
Dim connection As New ODBCConnection Dim query As New ODBCQuery Dim result As New ODBCResultSet
Dim count As Long Dim i As Integer
If Not connection.ConnectTo("OracleXE", "hr", "hr") Then Print "No connection to Oracle" Print connection.GetErrorMessage Print connection.GetExtendedErrorMessage Exit Sub End If
Set query.Connection = connection
query.SQL = "SELECT TABEL.MEDLEMSNUMMER, TABEL.FORNAVN, TABEL.MELLEMNAVN, TABEL.ETTERNAVN FROM HR.TABEL TABEL" 'query.SQL = "SELECT * FROM HR.TABEL TABEL" Set result.Query = query If Not result.Execute Then Print "SQL SELECT statement did not return any results" Print query.GetErrorMessage Print query.GetExtendedErrorMessage Goto close_sql End If
Do If Not result.NextRow Then Goto nextRow_Error If count Mod 1000 = 0 Then Print "Count = " + Cstr(count) + ", Col(1) = " + Cstr(result.GetValue(1)) End If count = count + 1 Loop Until result.IsEndOfData For i = 1 To 9 Print "Last line: Col(" + Cstr(i) + ") = " + Cstr(result.GetValue(i)) Next
Jeg ved ikke om det er relevant, men IBM har på deres store site en liste over rettelser til Lotus Notes og Lotus Domino Release 6.0.3, som bl.a. indeholder følgende rettelse:
DMAE5FSKDB SPR# DMAE5FSKDB - When ODBCResultSet CacheLimit and FetchBatchSize values are equal, looping through the result set using both NextRow and IsEndOfData methods no longer skips any data rows.
Det ligner lidt dit problem, synes jeg.
Anyway, bare du fik løst dit problem her og nu er nok ikke grund til at grave mere "snavs" frem. :-)
Ja, det er da heldig at 6.0.3 kun er 5 år gammel :-) Nu er vi nået til 8.0.1.
Og i mellemtiden er jeg kommet i tanke om at jeg har prøvet dette før, for 8 år siden, dengang også med Oracle og ODBC. Men tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.