Как проверить, существуют ли данные в таблице доступа - PullRequest
0 голосов
/ 26 мая 2019

Я создал форму пользователя, которая вставляет данные в таблицу Access. при вставке данных я хочу убедиться, что вставленный идентификатор должен существовать в таблице доступа. Я использовал для этого функцию DCOUNT, но это выдает ошибку «Несоответствие типов». Я перепробовал все решения, найденные в интернете, но здесь ничего не работает. Пожалуйста, помогите!

Я изменил выражение DCOUNT, чтобы поместить имя переменной формы в '', [], создавая внешнюю переменную, которая ссылается на функцию DCOUNT, но ничего не работает

Set conn = createobject("ADODB.connection")
set rs = createobject("ADODB.recordset")
strconn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data source = C:\MyPathMyDB.accdb"
qry = "select * from employee"

with rs
.adnew
if isnumeric(ManagerID) = false then
msgbox "Invalid Manager ID"
exit sub
elseif application.worksheetfunction.dcount("Employee_ID","Employee","activ='Yes'  and Employee_ID='"  & [EmployeeForm.ManagerID] & "'") = 0 then
msgbox "Manager does not exist"
exit sub
else 
. fields("Manager_ID").value = ManagerID
end if
end with

Я ожидаю, что функция определит, существует ли Employeeform.ManagerID в Employee_ID. Если да, то продолжайте, иначе выведите сообщение об ошибке

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Поскольку вы проверяете, что ManagerID является числовым, я предполагаю, что его значение не является текстовым, а active , вероятно, является логическим значением, и, поскольку вы можете получить доступ к ManagerID сам по себе, используйте его как есть , и критерии могут выглядеть следующим образом:

"activ=True and Employee_ID=" & ManagerID & ""
0 голосов
/ 27 мая 2019

Dcount (тот, который вы пытаетесь использовать) - это функция Access: Excel - для запроса диапазона листа.вам нужно будет запросить вашу базу данных доступа, чтобы узнать, есть ли запись:

Например:

sql =  "select * from employee where activ='Yes' and Employee_ID='" & _
        [EmployeeForm.ManagerID] & "'"

rs.open sql, conn

If not rs.eof then
    'got a match: add the new record and update to database
else
    msgbox "Manager not found!"
end if
...