В программном обеспечении для регистрации, созданном с помощью Qt4, я открываю базу данных Access .mdb, обновляя ее с помощью пользовательских полей.
В настоящее время у него есть таблица clients
с шестью полями:
CustomerNumber, FullName, CNICNumber, ResidentialAddress, ResidentialPhoneNumber, MobileNumber
, где CustomerNumber
- первичный ключ и номер, а все остальные - текстовые.Есть несколько записей.Но при попытке вставить другую запись с таким же CustomerNumber
возникает ошибка:
QODBCResult :: exec: Невозможно выполнить инструкцию: "[Microsoft] [ODBC Microsoft Access Driver] TheЗапрошенные вами изменения в таблице не увенчались успехом, поскольку они будут создавать повторяющиеся значения в индексе, первичном ключе или взаимосвязи. Измените данные в поле или полях, содержащих повторяющиеся данные, удалите индекс или переопределите индекс, чтобы разрешить повторяющиеся записии попробуй еще раз."
"[Microsoft] [ODBC Microsoft Access Driver] Запрошенные вами изменения в таблице не увенчались успехом, так как они могли создать дублирующиеся значения в индексе, первичном ключе или отношении. Измените данные в поле или поляхкоторые содержат повторяющиеся данные, удаляют индекс или переопределяют индекс, чтобы разрешить повторяющиеся записи, и повторите попытку. "«QODBC3: невозможно выполнить оператор»
Затем я нашел запрос UPDATE
, но следующий код выдает еще одну ошибку:
query.exec("UPDATE clients"
"SET FullName='"+cname+"', CNICNumber='"+cnic+"', ResidentialAddress='"+caddress+"', ResidentialPhoneNumber='"+cphone+"', MobileNumber='"+cmobile+"'"
"WHERE CustomerNumber="+cnumber+";");
Переменные cname, cninc, caddresss, cphone, cmobile, cnumber
являются строкамисо значениями.Но ошибка с указанным выше кодом:
QODBCResult :: exec: Невозможно выполнить оператор: «[Microsoft] [Диспетчер драйверов ODBC] Ошибка последовательности функций» »[Microsoft] [Диспетчер драйверов ODBC]Ошибка последовательности функций "" QODBC3: невозможно выполнить оператор "
Как это можно решить, т. Е. Как вставить новую запись, когда первичный ключ отсутствует, но обновить существующую запись тем же первичным ключом