SETUP:
Я использую базу данных SQL Server, связанную с файлом MS Access, поэтому я могу использовать формы доступа.
Я использую несвязанные формы с пользовательскими запросами, так как имею дело с несколькими таблицами (если есть более эффективный способ, я за это).
В SQL Server я настроил базу данныхроль с разрешениями для таблицы, я дважды проверил, позволил ли роли обновить таблицу.
ВЫПУСК:
Всякий раз, когда я использую свой запрос на обновление в Access, используя QueryDef (показанный ниже), он выполняется успешно, но фактически не обновляет таблицу.
ДЕТАЛИ:
У меня тоже была проблема с моим запросом вставки, однако это было только потому, что я не обновил запрос новыми столбцами, которые добавил в базу данных.Я также убедился, что я сделал то же самое для запроса на обновление.
Кроме того, я знаю, что запрос на обновление работает, поскольку я могу обновить запись непосредственно из SSMS.
Поскольку это выглядело как другой вопрос о доступе / sql-сервере, который у меня был, Нашел здесь .Я обязательно попробовал решение для этого, обновив ссылку на таблицу.Однако это не имеет значения.
КОД:
Запрос:
UPDATE con_people
SET people_first_name = @firstName,
people_last_name = @lastName,
people_title = @title,
people_group = @group,
people_email = @email,
people_shift = @shift,
people_hiredate = @hireDate,
people_location = @location,
people_reportsTo = @reportsTo,
people_versionCount = people_versionCount + 1,
people_datelastupdated = @dateUpdated,
people_isActive = @isActive
WHERE people_employeeID = @empID;
QueryDef:
Public Function UpdatePeople(firstName As String, _
lastName As String, _
title As Integer, _
group As Integer, _
Email As Variant, _
isActive As Boolean, _
Shift As Integer, _
Location As Integer, _
HireDate As Variant, _
ReportsTo As Variant, _
employeeID As Integer)
OtherFunctions.Initialize
Dim QDF As DAO.QueryDef
If FindQuery("UpdatePeople") = True Then OtherFunctions.dbs.QueryDefs.Delete "UpdatePeople"
Set QDF = OtherFunctions.dbs.CreateQueryDef("UpdatePeople", SQLUpdatePeople)
QDF.Parameters("@firstName").Value = firstName
QDF.Parameters("@lastName").Value = lastName
QDF.Parameters("@title").Value = title
QDF.Parameters("@group").Value = group
QDF.Parameters("@email").Value = Email
QDF.Parameters("@isActive").Value = isActive
QDF.Parameters("@empID").Value = employeeID
QDF.Parameters("@shift").Value = Shift
QDF.Parameters("@hireDate").Value = HireDate
QDF.Parameters("@location").Value = Location
QDF.Parameters("@reportsTo").Value = ReportsTo
QDF.Parameters("@dateUpdated").Value = ConvertTimeUnix.ConvertDateToUnix(Now())
QDF.Execute
If FindQuery("UpdatePeople") = True Then OtherFunctions.dbs.QueryDefs.Delete "UpdatePeople"
End Function
Любая помощь приветствуется,
Спасибо.