INSERT INTO в MS Access 2010 ИНОГДА ПОЛУЧАЕТ ОШИБКУ: 3073 Операция должна использовать обновляемый запрос - PullRequest
1 голос
/ 05 марта 2011

Я получаю ERROR: 3073 Operation must use an updateable query НЕКОТОРЫЕ , выполняя INSERT оценку.

У меня нет проблем на моем компьютере с Windows 7, но человек, которому я пишу это иногдаполучает ошибку.У нее также есть MS Access 2010 на Windows 7.

Как я уже говорил, я никогда не получал ее на своем компьютере, и она иногда получает ее.Код будет вставлять несколько строк, а затем через ошибку, а иногда и вовсе без ошибки.

Ошибка возникает, если у меня есть код и данные в одном файле .mdb или в отдельных файлах.Вот фрагмент кода:

OrderHdrInsertStmnt = " INSERT INTO ORDER_HDR " _  
& "(ORDER_ID, SOURCE_CODE, ORDER_DATE, SHIP_FNAME, SHIP_LNAME, SHIP_EMAIL, SHIP_COMP, SHIP_PHONE, SHIP_ADDR, SHIP_CITY, SHIP_STATE, SHIP_ZIP, SHIP_CNTRY, " _  
& " BILL_FNAME, BILL_LNAME, BILL_EMAIL, BILL_COMP, BILL_PHONE, BILL_ADDR, BILL_CITY, BILL_STATE, BILL_ZIP, BILL_CNTRY, " _  
& " TAX, SHIPPING, TOTAL, MOD_DATE, INSERT_DATE) " _  
& " VALUES (" _  
& "'" & OrderId & "','" & SourceCode & "','" & Orderdate & "','" & ShipFName & "','" & ShipLName & "','" & ShipEmail & "','" & ShipComp & "','" & ShipPhone & "','" & ShipAddr & "','" & ShipCity & "','" & ShipState & "','" & ShipZip & "','" & ShipCntry _  
& "','" & BillFName & "','" & BillLName & "','" & BillEmail & "','" & BillComp & "','" & BillPhone & "','" & BillAddr & "','" & BillCity & "','" & BillState & "','" & BillZip & "','" & BillCntry _  
& "','" & OrderTax & "','" & OrderShipping & "','" & OrderTotal & "','" & ImportDate & "','" & ImportDate & "');"

тогда я использую

dbsCurrent.Execute OrderHdrInsertStmnt, dbFailOnError

Любая помощь будет отличной!

Ответы [ 4 ]

0 голосов
/ 08 августа 2013

У меня была такая же ошибка на вставке. Я вставлял в связанную таблицу, используя предложение VALUES, которое выполнялось из VBA. Когда я переместил таблицу назначения вставки в локальную базу данных, это решило проблему. Затем я смог вставить все строки из локальной таблицы в связанную таблицу.

0 голосов
/ 11 апреля 2011

Таблицы являются общими и вы одновременно обновляете / вставляете?

Я запускаю тесты многопользовательских обновлений для одних и тех же записей.
Таблица: один идентификатор и один текстполе,
запрос: update text = randomString WHERE id = 800 (идентификатор 800 существует ...)
Метод выполнения: CurrentDb.Execute (qry)

10 раз более 200 на каждом компьютереУ меня была ошибка 3073. Таким образом, я предполагаю, что это означает «таблица заблокирована кем-то другим»

Для информации, о другом тесте (та же таблица), но в режиме вставки с использованием набора записей addNew и Update у меня была ошибка 3343(Формат базы данных не распознан)

Явные сообщения: P

0 голосов
/ 21 декабря 2011

Я разработал отдельную программу на Visual Basic, используя MS Access DB для друга более 2 лет назад. Недавно он пожаловался на ошибку «Операция должна использовать обновляемый запрос» при добавлении второй записи в сеансе. То есть: каждый раз, когда он использует программу, добавляется / обновляется только 1-я запись.

После поиска в Интернете, на разных форумах, я не могу найти вероятного ответа.

В конце концов, решение / обход моего дела: кажется, что недавно установленное моим другом программное обеспечение для резервного копирования (Memeo Backup), работающее в фоновом режиме, каким-то образом вызывает проблему. Отключите программу резервного копирования, программа может работать снова.

Итак, попробуйте отключить фоновые программы и посмотрите, вызывает ли какая-либо из них проблему.

0 голосов
/ 05 марта 2011

Ошибка, которую вы получаете, обычно возникает при выполнении оператора update для запроса, поэтому неясно, какие записи следует обновить. Вы явно этого не делаете.

Возможно ли, что некоторые из данных, которые вы объединяете в оператор вставки, иногда имеют неправильное значение, например, строка в числе или NULL или тому подобное. Это было бы наиболее вероятным объяснением. Наиболее вероятной причиной ошибки является какой-то нестандартный ввод, который объединяется в оператор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...