【发布时间】:2020-02-25 22:19:36
【问题描述】:
我创建了一个在 Access 中运行良好且没有错误的查询,在尝试将其转换为我的 vba 设置时,我无法弄清楚为什么我没有得到任何值,即使该查询在 access 中显然有效,并且不会导致 VBA 端出现错误。
在这里拉我的头发,我创建了一个边表,看看我是否可以“伪插入”计算值,但我遇到了与上面相同的问题 - 插入在访问中没有错误,在 vba 中通过没有问题,但实际上并没有插入任何数据。
我在暂停代码时复制了字符串查询,以确保所有内容都在有效的 Access 查询和 VBA 查询之间匹配,并且没有发现任何差异。
我在某处读到,因为我试图提取“第一行”数据片段,可能有一些我可以更改的 HDR 设置,但是当我尝试应用任何修复时,我发现他们打开了另一个 excel 实例并打开了一个对话框。
请让我知道我在这里做错了什么。
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
access 的实际输出是预期的“18”,excel 的 vba 记录集的输出总是 null 或空字符串。
【问题讨论】: