Я создал запрос, который прекрасно работает без ошибок в Access, и, пытаясь перевести его в настройки VBA, я не могу понять, почему я не получаю никаких значений, даже если запрос четко работает в доступе,и не вызывает ошибок на стороне VBA.
Вытаскивая здесь свои волосы, я создал боковую таблицу, чтобы посмотреть, смогу ли я «псевдо вставить» вычисленное значение, но я получаю ту же проблему, что и выше -insert работает без ошибок в доступе, проходит в vba без проблем, но фактически не вставляет никаких данных.
Я скопировал строковые запросы во время паузы кода, чтобы убедиться, что ВСЕ соответствует запросу Accessэто работает и запрос VBA, и не нашел никаких отличий.
Я где-то читал, так как я пытаюсь получить часть данных "первой строки", что может быть какая-то настройка HDR, которую я мог бы изменить, ноКогда я попытался применить какие-либо исправления, я обнаружил, что они открыли другой экземпляр Excel и открыли диалоговое окно.
Пожалуйста, дайте мне знать, чтоt Я делаю что-то не так.
Public Function PullNextLineItemNumB(QuoteNum) As Integer
Dim strQuery As String
Dim ConnDB As New ADODB.Connection
Dim myRecordset As ADODB.Recordset
Dim QuoteModifiedNum As String
ConnDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data
source=" & ThisWorkbook.Path & "\OEE Info.accdb"
'Query to try and make Access dump the value "18" into the table so I can
grab it after the query is finished, sidestepping excel not working
strQuery = "INSERT INTO TempTableColm (TempColm) SELECT
MAX(MID([Quote_Number_Line],InStr(1,[Quote_Number_Line]," & Chr(34) & "-"
& Chr(34) & ")+1)) AS MaxNum from UnifiedQuoteLog where Quote_Number_Line
like '" & QuoteNum & "*'"
ConnDB.Execute strQuery
'Original query, returns "18" as expected in Access, and null or empty in
the recordset
strQuery = "SELECT MAX(MID([Quote_Number_Line],InStr(1,
[Quote_Number_Line]," & Chr(34) & "-" & Chr(34) & ")+1)) from
UnifiedQuoteLog where Quote_Number_Line like '" & QuoteNum & "*'"
Set myRecordset = ConnDB.Execute(strQuery)
Do Until myRecordset.EOF
For Each fld In myRecordset.Fields
Debug.Print fld.Name & "=" & fld.Value
Next fld
myRecordset.MoveNext
Loop
myRecordset.Close
Set myRecordset = Nothing
ConnDB.Close
Set ConnDB = Nothing
End Function
Фактический вывод при доступе - "18", что ожидаемо, вывод из набора записей vba в Excel всегда является пустой или пустой строкой.