我正在使用Classic ASP访问我们网络服务器上的Access数据库。该应用程序检查对Web /表的传感器更新,即打印最后5条记录。历史上,此代码已用于多个表。我最近在数据库中添加了一个新表,当我修改代码以从新表中检索记录时,我得到了recordcount = -1,并且只输出最后一条记录。我已经阅读了有关Recordset游标的信息,但不确定我是否知道如何将其应用于代码,以及为什么该代码不适用于此新表?这是检索打印记录的基本代码:
WebName = "OurWeb"
MySite = "filedsn=" & Server.MapPath("/" & WebName & "/files/reffiles/accessdsn.dsn") & ";DBQ=" & Server.MapPath("/" & WebName & "/files/reffiles/loger.mdb") & ";DefaultDir=" _
& Server.MapPath("/" & WebName & "/") & ";"
set MyDatabase = server.createobject("ADODB.Connection")
if err.number <> 0 then response.write("<p>ODBC Error</p>")
Mydatabase.open MySite
set LastMyDate = MyDatabase.Execute("SELECT Format(Max([Date_Time]),'mm/dd/yy hh:mm:ss') AS Expr1 FROM Charger2;")
set LastMYDate = MyDatabase.Execute("SELECT Charger2.id FROM Charger2 WHERE Charger2.date_Time = #" & lastMGdate.fields(0).value & "#;")
MyIDLast = LastMyDate.fields(0).value -5
set LastMyRecord = MyDatabase.Execute("SELECT Charger2.id, Charger2.date_time, Charger2.INV_vdc, Charger2.INV_adc FROM Charger2 WHERE (((Charger2.id) > (" & MyIDLast & ")));")
Id是一个自动编号整数。此时,recordcount属性为“ -1”。当我直接从Access Program界面运行该Select查询时,它将返回正确的数字。
感谢您对此表为何会发生此问题的任何帮助和见解... RDK
答案 0 :(得分:2)
如果记录集未完全加载,则recordcount返回-1。
使用返回单个记录的聚合查询时,通常会完全加载该记录。但是,如果您过滤未索引的列,则可能不会。
如果要可靠地使用.RecordCount
,请先使用.MoveLast
来完全加载记录集。