查询返回一个值,但ADODB.Recordset.fields(“Value”)= null

时间:2017-08-18 10:09:38

标签: ms-access null wildcard adodb recordset

我正在尝试整理来自两个不同服务器的数据,一个SQL和一个Access。我承认我的访问SQL有点不对劲,但这个对我来说真的没有意义。

我在访问数据库中触发查询,我在两个服务器中配置了查询以返回此函数的单个值。

查询如下

Bookquery = 
"SELECT SUM(dbo_WIPJOBPOST.LQtyComplete) as [Sum]" & vbCr & _
"FROM dbo_WIPJOBPOST" & vbCr & _
"WHERE dbo_WIPJOBPOST.LMachine like '**" & Machno & "**'" & vbCr & _
"AND dbo_WIPJOBPOST.TrnDate between #" & Format(Stime, "dd-mmm-yyyy hh:mm:sss") & "# and #" & Format(Atime, "dd-mmm-yyyy hh:mm:sss") & "#" & vbCr & _
"or dbo_WIPJOBPOST.LWorkCentre like '**" & Machno & "**'" & vbCr & _
"AND dbo_WIPJOBPOST.TrnDate between #" & Format(Stime, "dd-mmm-yyyy hh:mm:sss") & "# and #" & Format(Atime, "dd-mmm-yyyy hh:mm:sss") & "#;"

当我直接对访问数据库运行查询时,我得到一个在“Sum”列下返回的数字。但是在应用程序中,我使用我的函数自动调用它,该函数将查询与数据库和我们感兴趣的列标题放在一起

Bstring = onerecord(Bookquery,“Access”,“Sum”)

Function onerecord(query As String, DB As String, Field As String)
'function to return single cell recordset

Dim Conn As ADODB.Connection
Dim Rec As ADODB.Recordset
Dim constring As String

constring = SelectDB(DB)

Set Conn = New ADODB.Connection
Set Rec = New ADODB.Recordset

'Open con string and run query
Conn.Open constring

Set Rec = Conn.Execute(query)

'Check records exist
If Not Rec.EOF Then

'return result
onerecord = Rec.Fields(Field)
Rec.Close

Else
MsgBox "No records"
Norecords = True
End If

' Clean up

If CBool(Conn.State And adStateOpen) Then Conn.Close
Set Conn = Nothing
Set Rec = Nothing

End Function

出于某种原因,一旦查询和字段放在行

  

onerecord = Rec.Fields(Field)

突出显示的提示返回null。我已经测试了查询,因为它在一个记录函数中打印并且它有效,我肯定将标题作为总和,但由于某种原因它不起作用。

我认为这与Machno周围的通配符有关,好像我指定了一个独立的机器,一个记录代码可以工作,但是它没有通配符(我正在处理较旧的数据库和机器名中的随机空格等)很常见。)

有谁可以帮助我采取最后的步骤?感觉非常接近!

0 个答案:

没有答案