我用recordset的addnew方法来添加数据,怎么老是提示错误???(200分)

  • 主题发起人 yuerongcan
  • 开始时间
Y

yuerongcan

Unregistered / Unconfirmed
GUEST, unregistred user!
我的代码如下:
set objConnection=server.CreateObject("ADODB.Connection")
constr="Provider=MSDAORA;Data Source=jszxmis;User ID=jszxmis;
Password=jszxmis;"
objConnection.open constr
set objRs=server.CreateObject("adodb.recordset")
temp_type=request("lb") '从类别选择中获得
objRs.Open temp_type,objConnection,3,2
objRs.AddNew
objRs("id")=temp_id
objRs("wh")=request("wh")
objRs("zlmc")=request("zlmc")
objRs("fwdw")=request("fwdw")
objRs("nr")=request("nr")
objRs("cffs")=request("cffs")
objRs.Update
老是提示我“objRs.addnew这行”错误:
ADODB.Recordset 错误 '800a0cb3'
对象或提供者不能执行所需的操作。
这是怎么回事啊????急啊!!!!救救我啊!!!!
 
temp_type的值应该是个类似"select id,wh,zlmc,fwdw,nr,cffs from t1"的查询语句
你的那个temp_type是这个值吗?
 
temp_type是个下拉菜单,其值是表名:
<select name="lb" class="tablecolor">
<option value="ys_zzgl">组织管理</option>
<option value="ys_wzgl">贯彻&amp;quot;五制&amp;quot;管理</option>
<option value="ys_jhjdgl">工程计划与进度管理</option>
<option value="ys_aqzlgl">安全与质量管理</option>
<option value="ys_zjjsgl">资金与竣工决算管理</option>
<option value="ys_cwjssj">城网项目竣工决算审计</option>
<option value="ys_zfjc">执法监察</option>
<option value="ys_cwgzcx">城网建设改造成效</option>
<option value="ys_zldagl">资料档案管理</option>
</select>
我把objRs.Open temp_type,objConnection,3,2换成:
objRs.Open "ys_zzgl",objConnection,3,2指定了表名,依然同样的错误啊
 
你把3,2这两个参数去掉看看
 
temp_type="select id,wh,zlmc,fwdw,nr,cffs from " + request("lb")
 
objrs.open 的第一个参数是sql语句呀,wangjiankang的方法没错的
 
objRs.AddNew[red]-->objRs.Append [/red]
objRs("id")=temp_id
objRs("wh")=request("wh")
objRs("zlmc")=request("zlmc")
objRs("fwdw")=request("fwdw")
objRs("nr")=request("nr")
objRs("cffs")=request("cffs")
objRs.Update[red]-->Post[/red]
 
append是DAO或是BDE中的方法,有没有搞错?
 
我已经改了,还是一样的错误:
set objConnection=server.CreateObject("ADODB.Connection")
constr="Provider=MSDAORA;Data Source=jszxmis;User ID=jszxmis;
Password=jszxmis;"
objConnection.open constr
set objRs=server.CreateObject("adodb.recordset")
temp_type="select id,wh,zlmc,fwdw,nr,cffs from " + request("lb")
objRs.Open temp_type,objConnection,3,2
objRs.AddNew
objRs("id")=temp_id
objRs("wh")=request("wh")
objRs("zlmc")=request("zlmc")
objRs("fwdw")=request("fwdw")
objRs("nr")=request("nr")
objRs("cffs")=request("cffs")
objRs.Update
还是提示“objRs.Addnew”这句错误:
ADODB.Recordset 错误 '800a0cb3'
对象或提供者不能执行所需的操作。
其实我只是想对Oracle的一个长文本数据进行添加,修改,删除操作,因为原来用的
varchar2类型只能到2000个字符数,所以我改为long类型,但听说long类型的不能用
sql语句操作,只能用recordset的addnew,update的方法,结果就出现上述问题,因
时间紧迫,如果不能解决上述问题的话,能不能有其他解决Oracle长文本数据的办
法?????希望各位能帮帮忙,不甚感激!!!!谢谢!!!!
 
objRs.Open temp_type,objConnection,3,2
改成
objRs.Open temp_type,objConnection,2,2
另外,temp_type也可以是一个表的
还有,你如果用的access,看看是不是只读的,上次我的一个朋友就是这个问题,他从光盘上
复制下来的文件默认是只读的
 
我把具体RECORDSET的OPEN帮助给你翻译了,你自己做做实验把,不知道你的ORACLE 有什么表约束
所以你需要自己实验一下
rs.open p1,p2,p3,p4,p5
p1:可以是一个ADO的COMMAND对象,一个SQL语句,一个表名,一个存储过程,一个URL,一个存储记录集的流
p2:数据库连接
p3:游标类型。
2表示动态游标,
0表示只能前移的游标,
1类似2但是别人增加删除记录,你发现不了,别人可以修改你的记录
3静态游标,别人的增删改你都发现不了。
-1不指定游标类型
p4:4批乐观锁定(一批都乐观的认为别人不会在你更新的时候更新数据)
3乐观锁定
2悲观锁定
1只读
-1不指定锁类型,采用缺省,通常在复制时用
p5:命令类型
-1不描述
1命令文本(如SQL串)
2当p1是一个表名时采用,同1
4等p1是个存储过程时采用,同1
8缺省
256等P1是一个文件名是采用,同1
512等P1是一个返回表所有列时采用,同1
 
另外不是LONG型不能用SQL语句操作,你可以用INSERT INTO T1 VALUES(‘A’,‘B’)操作
LONG型数据,关键是SQL语句串的本身长度有限制,所以你要采用ADDNEW UPDATE思路是对的
 
在objRs.AddNew 前加上objRs.movelast试试。
 
多人接受答案了。
 
顶部