Megosztás a következőn keresztül:


"A műveletnek frissíthető lekérdezést kell használnia" hibaüzenet jelenik meg az Excel ODBC-n keresztüli elérésekor

Hibajelenségek

Az Excel-munkalap ADO-n és ODBC-n keresztüli szerkesztésekor az alábbi hibaüzenet jelenhet meg, ha ADO DataControl-objektumot használ:

[Microsoft][ODBC Excel Driver] Operation must use an updateable query.

Ha ADO-kóddal létrehozott Rekordhalmaz-objektumot használ, a következő hibaüzenet jelenhet meg az Excel-munkalap ADO-n és ODBC-n keresztüli szerkesztésekor:

Run-time error '-2147467259(80004005)': [Microsoft][ODBC Excel Driver] Operation must use an updateable query.

Oka

Ez a probléma akkor fordul elő, ha olvasási módként mentett vagy megnyitott munkalapot próbál szerkeszteni.

Megjegyzés:

A ReadOnly az Excelhez való ODBC-kapcsolat alapértelmezett beállítása adatforrásnévvel (DSN) vagy anélkül. Ezért a felhasználónak mindig módosítania kell ezt a beállítást az adatok szerkesztéséhez.

Rezolúció

A probléma megoldásához használja az alábbi módszereket:

  • Győződjön meg arról, hogy a Recordset objektum LockType tulajdonsága nincs ReadOnly értékre állítva.

  • Győződjön meg arról, hogy a megnyitni kívánt fájl nem ReadOnly néven van mentve.

  • Ha DSN-n keresztül csatlakozik, kövesse az alábbi lépéseket:

    1. Nyissa meg a Vezérlőpultot, majd válassza az ODBC adatforrás-rendszergazda lehetőséget.
    2. Kattintson duplán a DSN-re.
    3. Az ODBC Microsoft Excel telepítő párbeszédpanelen válassza a Beállítások lehetőséget.
    4. Győződjön meg arról, hogy a ReadOnly jelölőnégyzet nincs bejelölve.
  • Ha DSN-nélküli kapcsolatot használ, ügyeljen arra, hogy a "ReadOnly=0" beállítás szerepeljen a kapcsolati sztringben. Például:

    cn.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\MyDoc.xls;ReadOnly=0;"
    

Státusz

Ez a viselkedés terv szerint történik.

További információ

A viselkedés reprodukálásának lépései

  1. Hozzon létre egy új Standard EXE-projektet a Visual Basicben.

  2. A Projekt menüBen válassza a Hivatkozások lehetőséget, majd adjon hozzá egy hivatkozást a Microsoft ActiveX Adatobjektum-tárhoz.

  3. Parancs gomb hozzáadása a Form1-hez.

  4. Adja hozzá a következő kódot a Form1-hez:

    Dim rs As ADODB.Recordset
    Dim cn As ADODB.Connection
    
    Private Sub Form_Load()
      Command1.Caption = "Edit"
    End Sub
    
    Private Sub Command1_Click()
      Dim DocPath As String
    
      DocPath = App.Path & "\Test.xls"
    
      Set cn = New Connection
      Set rs = New Recordset
    
      cn.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & DocPath & ";ReadOnly=1"
      rs.LockType = adLockOptimistic
      rs.Open "TB1", cn
      rs.AddNew
      rs.Fields(1).Value = "New Value"
      rs.Update
    
      rs.Close
      cn.Close
      Set rs = Nothing
      Set cn = Nothing
    End Sub  
    
  5. Mentse az alkalmazást.

  6. Hozzon létre egy új Excel-munkalapot, majd mentse a munkalapot Test.xls.

  7. A Beszúrás menüben mutasson a Név pontra, majd válassza a Definiálás lehetőséget.

  8. Hozzon létre egy új táblázatot az Excel-munkalapon belül, majd nevezze el a táblázatot TB1 néven.

  9. Mentse a munkalapot ugyanabban a mappában, mint a Visual Basic alkalmazás.

  10. Nyomja le az F5 billentyűt az alkalmazás futtatásához.

Hivatkozások

További információ : Office Space: Tippek és trükkök a Microsoft Office-alkalmazások szkripteléséhez.