Как вернуть несколько значений из таблицы на основе определенного элемента, который я ввел? - PullRequest
0 голосов
/ 17 мая 2019

Я пытался использовать Tooling_No_AfterUpdate() как для Sub, так и для Function, но он подсказывал мне «Обнаружено неоднозначное имя», так как я знаю, что не могу использовать один и тот же идентификатор. Затем я изменил идентификатор и установил его на публичную функцию, но он не работает, и запросил у меня «Определяемый пользователем тип не определен».

Я создаю форму для ввода пользователем номера инструмента, чтобы узнать место хранения, в котором может находиться несколько мест. Я пытался использовать ADODB.Recordset для получения данных из моей таблицы активов. Итак, вот что я попробовал:

Private Function Tooling_No_Enter() As ADODB.Recordset
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Set Tooling_No_Enter = CurrentProject.Connection.Execute("select FirstName, LastName from Employees")

End Function

Private Sub Tooling_No_AfterUpdate()
Dim strStorage_Location_1 As String
Dim strStorage_Location_2 As String
Dim strStorage_Location_3 As String
Dim strStorage_Location_4 As String
Dim strStorage_Location_5 As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Set rst = Tooling_No_Enter()
Do While Not rst.EOF
    strStorage_Location_1 = rst!Storage_Loacation_1
    strStorage_Location_2 = rst!Storage_Loacation_2
    strStorage_Location_3 = rst!Storage_Loacation_3
    strStorage_Location_4 = rst!Storage_Loacation_4
    strStorage_Location_5 = rst!Storage_Loacation_5
    Debug.Print strStorage_Location_1 + vbCrLf + strStorage_Location_2 + vbCrLf + strStorage_Location_3 + vbCrLf + strStorage_Location_4 + vbCrLf + strStorage_Location_5
    rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub

После этого пользователи смогут выбирать местоположение, в то время как выбранное местоположение будет записано в таблицу активов и таблицу транзакций, и это те части, которые я не могу понять.

1 Ответ

0 голосов
/ 17 мая 2019

Вы используете неправильный метод, чтобы открыть набор записей ADODB.С одной стороны, Execute используется для действия SQL (DELETE, UPDATE, INSERT).

Одним из способов использования объекта набора записей в нескольких процедурах является объявление переменной набора записей в заголовке модуля.Пример показывает объявление, установку и открытие объектов подключения и набора записей, которые затем упоминаются в другой процедуре, которая не показана.

Option Compare Database
Option Explicit

Public strOldLabNum
Dim cn As ADODB.Connection
Dim rsOldSample As ADODB.Recordset
___________________________________________________

Private Sub cbxOldLabNum_AfterUpdate()

Set cn = CurrentProject.Connection
Set rsOldSample = New ADODB.Recordset

strOldLabNum = Me.tbxOldYear & "A-" & Me.cbxOldLabNum

'select old sample info from table zSample
rsOldSample.Open "SELECT * FROM zSample WHERE LabNum='" & strOldLabNum & "';", _
    cn, adOpenStatic, adLockPessimistic

End Sub
...