2013-05-14 139 views
1

我的网站中最简单的组件之一就是在没有任何代码变更的情况下停止了从一天到另一天的工作。Asp-Classic ADODB记录集丢失记录

'Connection Declaration as connection 
Set rs = Server.CreateObject ("ADODB.Recordset") 
rs.Open "SELECT * FROM tablename ORDER BY id DESC", connection, 1, 3 
while not rs.EOF 
    'writing some Table from the records in DB 
    'Simplified Code %> 
    <tr><td><%=rs("id")%></td><td><%=rs("description")&></td></tr> 
    <% 
    rs.MoveNext 
Wend 
在我的数据库

我已经验证的30个记录:(非凡数

上面的代码被执行,当我看到他们的2

这告诉我两件事情,

第一:表名是正确的,并建立与数据库的连接
第二:表生成本身是正确的

我也有一个较小的测试系统。样本数据库中的完全相同的代码会生成预期的结果。

不幸的是我有“即时访问”我的主页为“调试目的”

是否有ADODB记录集丢失记录的任何已知的错误绝不?请记住代码完全相同,并且工作“无错误”。

+1

在查询结束时,“连接,1,3”的用途是什么? – Christian 2013-05-14 12:33:36

+0

这不再是查询,它是连接和游标的定义。你也可以这样做:rs.Connection = connection rs.Cursors = 1,3 rs.open(query) – Vogel612 2013-05-14 13:05:53

+0

如果你的代码使用不同的数据库,那么错误更可能在数据库中比asp – John 2013-05-14 19:19:33

回答

1

一些建议。

使用选项如果尚未显式 - (我没有看到它在你的代码中)这将显示SQL错误,所以这可能有所帮助。

检查您是否还没有销毁RS。

此外, “连接,1,3” 的意思是 '有效连接', 'CursorType的', '锁定类型'

你的CursorType是 'adOpenKeySet' - 3 'ADOPENSTATIC' 是更好的,除非你特别想要一个密钥集?尝试调用打开这种方式来强制默认值(这奇怪的是3和1分别为!):

RS.Open "SELECT * FROM tablename ORDER BY id DESC",connection 

我也常常写RS输出循环是这样的:

If Not RS.BOF Then 
    ' write table tag HTML 
    Do While Not RS.EOF 
     ' write table row + row data 
     RS.MoveNext 
    Loop 
    ' write end table tag HTML 
Else 
    ' write "RS is empty!" 
End If 

这将使它如果记录集是空的,则更容易判断。

+0

感谢您的建议。我正在度假一个月,所以我的同事正在尝试,发现造成错误的环境有一点小差异。只是因为你想知道,'connection,1,3'是我们的“编码标准”(我们没有但是nvm)。最后,在表格内使用的一些丢失的文件夹中发现了错误(如果它们在那里的话,那么也是如此)。我的同事解决了这个问题,所以我只想接受你的答案 – Vogel612 2013-06-10 10:21:23