Вставить запрос / Выбрать запрос работает в доступе, но не в VBA - PullRequest
0 голосов
/ 30 октября 2019

Я создал запрос, который прекрасно работает без ошибок в 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 всегда является пустой или пустой строкой.

1 Ответ

0 голосов
/ 30 октября 2019

Похоже, я решил проблему, хотя, глядя на это, очевидно, оператор Excel, использующий ADODB с доступом, имеет значение% для LIKE и НЕ * (по причинам). Как только я сделал это изменение, все начало работать.

Может кто-нибудь объяснить, почему это так? Я действительно хочу понять, почему это был дизайнерский выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...