PRB: "Operacja musi używać kwerendy z możliwością aktualizacji" Podczas uzyskiwania dostępu do programu Excel za pośrednictwem odbc
Symptomy
Podczas edytowania arkusza programu Excel za pośrednictwem ADO i ODBC może zostać wyświetlony następujący komunikat o błędzie, jeśli używasz obiektu ADO DataControl:
[Microsoft][ODBC Excel Driver] Operation must use an updateable query.
Jeśli używasz obiektu Zestaw rekordów, który jest generowany za pomocą kodu ADO, podczas edytowania arkusza programu Excel za pośrednictwem ADO i ODBC może zostać wyświetlony następujący komunikat o błędzie:
Run-time error '-2147467259(80004005)': [Microsoft][ODBC Excel Driver] Operation must use an updateable query.
Przyczyna
Ten problem występuje, jeśli spróbujesz edytować arkusz, który został zapisany lub otwarty jako ReadOnly.
Uwaga
ReadOnly to ustawienie domyślne dla połączenia ODBC z programem Excel z nazwą źródła danych (DSN) lub bez tej nazwy. W związku z tym użytkownik musi zawsze zmienić to ustawienie, aby edytować dane.
Rozwiązanie
Aby rozwiązać ten problem, użyj następujących metod:
Upewnij się, że właściwość LockType obiektu Recordset nie jest ustawiona na wartość ReadOnly.
Upewnij się, że plik, który próbujesz otworzyć, nie został zapisany jako ReadOnly.
Jeśli nawiązujesz połączenie za pośrednictwem sieci DSN, wykonaj następujące kroki:
- Otwórz Panel sterowania, a następnie kliknij pozycję Administrator źródła danych ODBC.
- Kliknij dwukrotnie nazwę DSN.
- W oknie dialogowym Konfiguracja programu Microsoft Excel ODBC kliknij pozycję Opcje.
- Upewnij się, że pole wyboru ReadOnly nie jest zaznaczone.
Jeśli używasz połączenia bez nazwy DSN, pamiętaj o dodaniu opcji "ReadOnly=0" do parametry połączenia. Przykład:
cn.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\MyDoc.xls;ReadOnly=0;"
Stan
Takie działanie jest celowe.
Więcej informacji
Kroki odtwarzania zachowania
Utwórz nowy projekt standardu EXE w visual basic.
W menu Projekt kliknij pozycję Odwołania, a następnie dodaj odwołanie do biblioteki obiektów danych Usługi Microsoft ActiveX.
Dodaj przycisk Polecenia do formularza Form1.
Dodaj następujący kod do formularza Form1:
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
Zapisz aplikację.
Utwórz nowy arkusz programu Excel, a następnie zapisz arkusz jako Test.xls.
W menu Wstawianie wskaż pozycję Nazwa, a następnie kliknij pozycję Definiuj.
Utwórz nową tabelę w arkuszu programu Excel, a następnie nadaj jej nazwę TB1.
Zapisz arkusz w tym samym folderze co aplikacja Visual Basic.
Naciśnij klawisz F5, aby uruchomić aplikację.
Informacje
Aby uzyskać dodatkowe informacje, zobacz następujący artykuł:
Przestrzeń biurowa: porady i wskazówki dotyczące skryptów aplikacji pakietu Microsoft Office
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla