Проблема в том, что «номер» расположен в таблице не связанной напрямую с необходимыми данными: в моем понимании на входе имеем одно уникальное имя [REG], а на пути к необходимым данным оно пару раз меняется: [REG] > [ID] > [UNIC]…
Не знаю каким путем получить следующий результат:
все записи по «номеру» [REG] в таблице [Data] с условием [TYPE=3]
Есть макрос по прямому SQL-запросу:
- Код: Выделить всё
X = 3473 ' Получение искомого «номера»
…
‘ Далее следует запрос необходимой записи через SQL:
Dim CNN As ADODB.Connection
Dim RST As ADODB.Recordset
Dim WSOrig As Worksheet
Dim WSTemp As Worksheet
Dim zSQL As String
Set WSOrig = ActiveSheet
' Создание SQL-запроса для извлечения записи из первой таблицы (с «номером»):
zSQL = "SELECT ID, NAME, STATUS, REG FROM Register WHERE REG=" & X
MyConn = ThisWorkbook.Path & Application.PathSeparator & "basa.mdb"
Set CNN = New ADODB.Connection
With CNN
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open MyConn
End With
Set RST = New ADODB.Recordset
RST.CursorLocation = adUseServer
RST.Open Source:=zSQL, _
ActiveConnection:=CNN, _
CursorType:=AdForwardOnly, _
LockType:=adLockOptimistic, _
Options:=adCmdText
' Копирование записей из набора данных на рабочий лист:
Set WSTemp = Worksheets.Add
WSTemp.Select
Range("B2").CopyFromRecordset RST
' Закрыть набор данных и соединение:
RST.Close
CNN.Close