日期:2014-05-16  浏览次数:20812 次

ASP+ACCESS 存库时出现:'bof 或 eof 中有一个是“真”...............的问题,请帮忙~
自己弄了简单的产品管理这类的东东,在 '修改产品信息 '这个模块出现了问题,

而且是在存库的时候,(因为我用JS写了个判断用户输入格式的验证),错误为:

错误类型:
ADODB.Recordset   (0x800A0BCD)
BOF   或   EOF   中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/kfedit/yx_xg.asp,   第   111   行

部份存库代码为:
set   rsyx=server.createobject( "adodb.recordset ")


sql= "select   *   from   yx_data     where   user_id= ' "   &user_id   &   " '   and   id=   "&id& "     "  
                rsyx.open   sql,conn,3,3        
                rsyx( "user_Unit ")                   =user_Unit      
                rsyx( "yx_htbh ")                       =yx_htbh
                rsyx( "yx_yxhz ")                       =yx_yxhz
                rsyx.update
                rsyx.close  

................

yx_data     为库中的一个表
user_id     为用户编号,此编号在库中是唯一的;
id     是 "自动编号 "的,仅在表中是唯一的;


/kfedit/yx_xg.asp,   第   111   行    
                                        这行即是:rsyx( "user_Unit ")                   =user_Unit

  我做过如下测试:

1.如果同一用户编号下只有一个产品信息:

那么,只要用sql= "select   *   from   yx_data     where   user_id= ' "   &user_id   &   " '   就可以更新了,不会出错;

2.如果同一用户编号下有多个产品信息;
那么,用sql= "select   *   from   yx_data     where   user_id= ' "   &user_id   &   " ',就会将该表中所有user_id字段的产品信息全部更新,这可不是我想要的结果;

3.用sql= "select   *   from   yx_data     where   user_id= ' "   &user_id   &   " '   and   id=   "&id& "     "   ,带上该表中id参数,就会出现错误..
错误类型:
ADODB.Recordset   (0x800A0BCD)
BOF   或   EOF   中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

另外:在页面中,同一用户的多个产品信息下,点击某一个产品信息的修改按钮后,   是可以正常传递该产品信息可以修改的字段值的.

带上[...and   id=   "&id& "]   后,表现就是在数据表中,找不到记录;这是怎么回事呢?

各位帮帮忙哈~~


------解决方案--------------------
--1、字段名加[]
--2、表中是否有关键字

sql= "select * from yx_data where user_id= ' " &user_id & " ' and [id]= "&id& " "
------解决方案--------------------
你Open完直接update,也不校验是否存在记录,不出错才怪。

解决的办法很简单。

open完用一个if(rs.eof or rs.bof)校验一下,或者使用recordcount
------解决方案--------------------
sql= "select * from yx_data where user_id= ' " & user_id & " ' and [id]= " & id & " "