Попытка запустить запрос на обновление таблиц доступа с помощью VBA - PullRequest
0 голосов
/ 29 мая 2020

Я только новичок в Vba. Я могу получить результаты выборочного запроса, используя набор записей. Но пока я пытаюсь запустить приведенный ниже код запроса на обновление, я столкнулся с проблемой около выполнения. Я получаю ошибку времени выполнения -2147217904 (80040e10). Для одного или нескольких обязательных параметров не указано значение. Может ли кто-нибудь помочь мне с этим.

Sub Button8_Click()
Dim cmd As New ADODB.Connection

Dim Path As String

Path = "C:\Users\Documents\"

cmd.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & "Productivity_Tracker.accdb"



For Each chkbx In ActiveSheet.CheckBoxes
    If chkbx.Value = 1 Then
        For r = 1 To Rows.Count
            If Cells(r, 1).Top = chkbx.Top Then
                'With Worksheets("Sheet2")
                    'LRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    '.Range("A" & LRow & ":D" & LRow) =

                     'Sheet3.Range("A" & r & ":F" & r).Value
                     Dim alloc_per As Integer
                     Dim emp_id As Integer
                     Dim proj_id As Integer
                     alloc_per = Sheet3.Range("E" & r).Value
                     emp_id = Sheet3.Range("A" & r).Value
                     proj_id = Sheet3.Range("B" & r).Value
                qry = "UPDATE Employee_Project_Assignment SET Employee_Project_Assignment.Allocation_Percentage = alloc_per WHERE Employee_Project_Assignment.Employee_ID = emp_id and Employee_Project_Assignment.Project_ID = proj_id"



              cmd.Execute qry

                'Exit For
            End If
        Next r
    End If
Next

Dim recordsChanged As Integer
    cmd.Execute (recordsChanged)
    If recordsChanged > 0 Then
        Console.WriteLine ("Update succesfull")
   End If


End Sub

1 Ответ

0 голосов
/ 29 мая 2020

Вы передаете буквальные строки "alloc_per" et c в своем SQL вместо значений, содержащихся в этих переменных.

Попробуйте следующее:

qry = " UPDATE Employee_Project_Assignment t SET " & _
      " t.Allocation_Percentage = " & alloc_per & " WHERE " & _
      " t.Employee_ID = " & emp_id & " and " & _
      " t.Project_ID = " & proj_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...