Barvna shema: Riviera
Trenutno dejavna stran: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » Gonilnik WKL OData ODBC » Odpravljanje težav z gonilnikom OData ODBC » Access obvisi pri GetRows

Access obvisi pri GetRows

Klic Recordset.GetRows nad povezano tabelo se ne vrne; Access se ne odziva več in ga je treba končati. Z MoveNext nad isto tabelo se namesto tega prikaže napaka 3146 „ODBC–call failed“.

Okolje

Access oziroma DAO s povezanimi tabelami, s katerim koli gonilnikom ODBC, tudi z Microsoftovim ODBC Driver 18.

Vzrok

Če pri nadaljnjem branju prenos naslednje strani ne uspe – na primer zaradi omejitve zahtev storitve (429), časovne omejitve ali prekinitve omrežja –, gonilnik javi napako (SQL_ERROR). GetRows nato neskončno kliče SQLFreeStmt(SQL_CLOSE) in se nikoli ne vrne, ne glede na SQLSTATE. Z gonilnikom SQL Serverja je enako, na primer pri pogledu, ki sredi branja deli z nič. To je vedenje DAO, ne gonilnika.

Odprava

  1. GetRows nadomestite z zanko z MoveNext:

    Do Until rs.EOF
        ' … obdelava …
        rs.MoveNext
    Loop

    MoveNext se pri isti napaki takoj vrne z napako 3146, ki jo prestreže vaša obravnava napak.

  2. Dejansko napako pri nadaljnjem branju ugotovite s sledenjem. Pri podatkovnem prehodu se naslednje strani ne štejejo v omejitev zahtev; 429 pri nadaljnjem branju kaže na naslove naslednjih strani, ki jih je aplikacija sestavila sama, ali na drugo storitev.

Preverjanje

Isti postopek se konča s sporočilom o napaki, namesto da bi obvisel, ali pa se izvede do konca.

Sorodne teme

sl/wiki/data-conectivity/odata-odbc/troubleshooting/getrows-hangs.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille