Lezen in het Engels

Delen via


PRB: 'Bewerking moet een bijwerkbare query gebruiken' Wanneer u Excel opent via ODBC

Symptomen

Wanneer u een Excel-werkblad bewerkt via ADO en ODBC, kan het volgende foutbericht worden weergegeven als u een ADO DataControl-object gebruikt:

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

Als u een Recordset-object gebruikt dat wordt gegenereerd met ADO-code, kan het volgende foutbericht worden weergegeven wanneer u een Excel-werkblad bewerkt via ADO en ODBC:

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

Oorzaak

Dit probleem treedt op als u probeert een werkblad te bewerken dat is opgeslagen of geopend als ReadOnly.

Notitie

ReadOnly is de standaardinstelling voor een ODBC-verbinding met Excel, met of zonder een gegevensbronnaam (DSN). Daarom moet de gebruiker die instelling altijd wijzigen om gegevens te bewerken.

Oplossing

Gebruik de volgende methoden om dit probleem op te lossen:

  • Zorg ervoor dat de eigenschap LockType van het object Recordset niet is ingesteld op ReadOnly.

  • Zorg ervoor dat het bestand dat u probeert te openen niet is opgeslagen als ReadOnly.

  • Als u verbinding maakt via een DSN, volgt u deze stappen:

    1. Open Configuratiescherm en klik vervolgens op ODBC-gegevensbronbeheerder.
    2. Dubbelklik op uw DSN.
    3. Klik in het dialoogvenster ODBC Microsoft Excel Setup op Opties.
    4. Zorg ervoor dat het selectievakje ReadOnly niet is ingeschakeld.
  • Als u een DSN-loze verbinding gebruikt, moet u de optie ReadOnly=0 opnemen in de verbindingsreeks. Bijvoorbeeld:

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

Status

Dit gedrag is inherent aan het ontwerp van het product.

Meer informatie

Stappen voor het reproduceren van het gedrag

  1. Maak een nieuw Standard EXE-project in Visual Basic.

  2. Klik in het menu Project op Verwijzingen en voeg vervolgens een verwijzing toe naar microsoft ActiveX Data Objects Library.

  3. Voeg een opdrachtknop toe aan Formulier1.

  4. Voeg de volgende code toe aan Form1:

    VB
    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. Sla de toepassing op.

  6. Maak een nieuw Excel-werkblad en sla het werkblad op als Test.xls.

  7. Wijs in het menu Invoegen de optie Naam aan en klik op Definiëren.

  8. Maak een nieuwe tabel in het Excel-werkblad en geef de tabel de naam TB1.

  9. Sla het werkblad op in dezelfde map als de Visual Basic-toepassing.

  10. Druk op F5 om de toepassing uit te voeren.

Verwijzingen

Zie het volgende artikel voor meer informatie:

Office Space: tips en trucs voor het uitvoeren van scripts voor Microsoft Office-toepassingen