3

当我通过 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
4

2 回答 2

1

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

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

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

hits = r.fields("cnt")

或者

hits = r("cnt")

Recordcount有时是骗人的,所以我用的不多。我每次都使用上述方法。

于 2013-02-18T04:43:54.843 回答
1
r.CursorLocation = 3 'adUseClient. Thanks @HansUp

在使用之前添加上面的行r.Open。是。
_ 因此,记录会随着您的进行而被获取(类似于 .net datareader)。将其更改为会将所有记录带到客户端,这将提供正确的.CursorLocationadUseServeradUseClientRecordCount

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

conn.Close set conn = Nothing

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

于 2013-02-18T07:08:39.740 回答