获取SQL查询结果在MS Access中但不在VBScript中

时间:2013-02-18 03:58:17

标签: sql vbscript ms-access-2007

当我通过MS Access执行SQL查询时,我得到了返回的结果,但如果我在VBScript中执行相同的查询,则我的RecordCount为-1​​。我不知道这是否是连接错误。我没有得到任何东西,但很明显SQL确实在Access中返回结果。我在下面的连接代码中获得0次点击。

sqlquery = "SELECT * FROM i2cner WHERE Authors Like 'Ish*';"
dim conn
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "d:/inetpub/ga/sarina/i2cner/contacts2000.mdb"
set r = Server.CreateObject("ADODB.recordset")
if r.state = 1 then r.close
r.Open sqlquery, conn
hits = r.RecordCount
session("hits") = hits
set session("r") = r

2 个答案:

答案 0 :(得分:1)

如果您只需要记录计数,那么您可以给出

sqlquery = "SELECT COUNT(*) AS cnt FROM i2cner WHERE Authors LIKE 'Ish%'"

请注意,SQL字符串中没有;。 当您必须检索计数时,您可以

hits = r.fields("cnt")

OR

hits = r("cnt")

Recordcount有时具有欺骗性,所以我不会太多使用它。我每次都使用上述方法。

答案 1 :(得分:1)

r.CursorLocation = 3 'adUseClient. Thanks @HansUp

在使用r.Open之前添加上述行 CursorLocationadUseServer。因此,在您前进时会获取记录(类似于.net datareader)。将其更改为adUseClient会在客户端显示所有记录,这将提供正确的RecordCount

编辑:此外,在会话中存储记录集也没有意义。并且,一旦使用完毕,您应该关闭连接 -

conn.Close set conn = Nothing

在会话中存储记录集的需要是什么?