Как настроить объект команды ADO для представления, а не для хранимой процедуры?
Я использую MS Access 2013 для подключения к 2 представлениям в базе данных Caché с помощью DSN. Я связал эти представления как таблицы с успехом, но мы хотим ограничить соединение выборкой во время вызова функции, а не связанной "таблицей". Я ничего не нахожу в интернете об использовании ADO 2.8 для настройки командного объекта для представления. Для представления не существует типа команды. В зависимости от выбранного типа команды я либо получаю сообщение об ошибке, указывающее, что мне нужно предоставить текст SQL, либо вообще не возвращаю никаких записей. Состояние объекта подключения в порядке.
Что я уже пробовал:
Я пробовал каждый тип команды и несколько различных способов вызова возврата набора записей. Вот тестовая процедура, которую я использовал для игры с этим кодом:
Public Function TestADO() Dim adoConn As ADODB.Connection Dim adoCmd As ADODB.Command Dim adoRs As ADODB.Recordset Const DSN = "CWSCACHEMSACCESS" 'The name of my tested DSN Const ALLERGY_VIEW = "SYSTEM.client_allergies_nondrug" 'The name of my View Set adoConn = New ADODB.Connection 'open the connection adoConn.Open DSN If adoConn.State = adStateOpen Then MsgBox "Connection Open" Else MsgBox "Connection Not Opening" GoTo proc_exit End If 'Open the view and get contents into recordset Set adoCmd = New ADODB.Command With adoCmd Set .ActiveConnection = adoConn .CommandType = adCmdText 'have tried all options .CommandText = ALLERGY_VIEW .CommandTimeout = 120 Set adoRs = adoCmd.Execute 'The following doesn't work either: '=================================== 'Set adoRs = New ADODB.Recordset 'adoRs.Open adoCmd, adoConn, adOpenStatic, adLockReadOnly End With 'close the connection 'adoConn.Close MsgBox "RS Count: " & adoRs.RecordCount & vbCrLf & "RS BOF: " & adoRs.BOF & vbCrLf & "RS EOF: " & adoRs.EOF proc_exit: On Error Resume Next adoConn.Close Set adoConn = Nothing Set adoCmd = Nothing Set adoRs = Nothing Exit Function proc_err: MsgBox Err.Number & ": " & Err.Description, vbCritical, "TestADO() Error" Resume proc_exit End Function
PIEBALDconsult
Ты не можешь.
_Asif_
Представления доступны как таблицы (они не имеют специализированного синтаксиса) , и правильный синтаксис будет выглядеть следующим образом
Выберите * из client_allergies_nondrug. То есть :
. CommandText = " SELECT * FROM client_allergies_nondrug";