为什么 rs.open sql,conn,1,1 不能得到结果集,而set rs=conn.execute(sql) 能得到结果集,高手帮忙啊!急急急!

时间:2021-05-09 07:27:07
set rs=server.createobject("adodo.recordset")
rs.open sql,conn,1,1
如果用 rs.open sql,conn ,则提示错误,
ADODB.Recordset 错误 '800a0bb9' 

变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。 

而set rs=conn.execute(sql)却能得到结果集,这是怎么回事呀,急急急!

23 个解决方案

#1


跟你的sql语句有关
能不能贴出来??

#2


1,1
不能执行update,呵呵

#3


对把你的SQL语句贴出来!

#4


数据库的链接用VB做成用dll,我在VB里测试能通过,到了asp页面就不行了,sql语句是正确的
Ps_ConnStr = "driver={SQL Server};Database=office;Pwd=1;Uid=user;Server=192.168.1.70"
conn.open Ps_ConnStr 

set rs=server.createobject("adodo.recordset")
rs.open "select * from temp",conn,1,1    ---这句会出错

conn.execute ("select * from temp")    ---这句不会出错

#5


使用
set rs=server.createobject("adodo.recordset")

必须指定游标,即前面的1(可选值0,1,2,3)
后面的1为锁定类型(可选值1,2,3),可以不指定
rs.open sql,conn,1,1

set rs=conn.execute(sql),其实数据库已经指定了默认游标


#6


我只要得出结果集就行了,不需要update,而且要rs.open sql,conn 的这种
因为我是改别人的程序,现在把数据库的链接做成dll,
现有的程序都是用rs.open sql,conn 来打开数据集,我晕啊:(,哭.....

#7


用这个试试看吧:
rs.cursorlocation=3
rs.open sql,conn,3,2

#8


To  lienzhu(李强) 
不指定游标类型也不行,
  rs.open sql,conn  ---也行不通

#9


comszsoft(星星点灯) 的方法也不行
555555555555........

#10


rs.open sql,conn,1,3

#11


把dll代码贴出来看看
信誉91..........-__,-

#12


set rs=server.createobject("adodo.recordset") ??? ("Adodb.Recordset")

#13


呵呵,我的信誉分怎么这么少:(

Private Sub SetConnStr()
    Dim fs_dbtype, fs_dbsource
    On Error GoTo Err
    If Ps_databaseip = "" Then
       P_Response.Write "数据库路径设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    If Ps_databasename = "" Then
       P_Response.Write "数据库设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    If Ps_databaseLoginName = "" Then
       P_Response.Write "数据库用户名设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    If Ps_databasePws = "" Then
       P_Response.Write "数据库密码设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    Ps_ConnStr = "driver={SQL Server};Database=" & Ps_databasename & "; Pwd=" & Ps_databasePws & ";Uid=" & Ps_databaseLoginName & ";Server=" & Ps_databaseip
    Exit Sub
Err:
  Call myErr
End Sub

Public Function SetConn() As ADODB.Connection
 
    Call SetConnStr
    
    Set P_Conn = New ADODB.Connection
    P_Conn.CommandTimeout = 30
    P_Conn.ConnectionTimeout = 30
    On Error GoTo Err
    P_Conn.Open Ps_ConnStr
    Set SetConn = P_Conn
    Exit Function
Err:
    Call myErr
End Function

*************asp页面调用***************
Set P_OaSys =Server.CreateObject("OaSys.Encrypt")
Set P_OaSys.P_Response=Response
set oConn=server.createobject("ADODB.connection")
set oConn=P_OaSys.SetConn()
set rs=server.CreateObject("ADODB.Recordset")
fs_sql="select * from temp1"
set rs=oconn.execute (fs_sql)  --这句能返返回结果集
‘rs.open fs_sql ,oConn         --这句就出错了,
                              --变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。
Response.write(rs.eof)

#14


我的QQ  258032048

#15


adodb.recordset

楼主是不是写错了

#16


同志们再帮帮我啊,叩谢!

#17


你直接在VB里边测试一下看看用rs.open fs_sql,oConn,1,1能不能得到数据先,调试成功后参照着改回到ASP里边去!

#18


呵呵,典型的连接错误,你在开指针前conn未打开:
conn .open
将你的方向键改为万能方向键:1,3
rs.open sql,conn,1,3

#19


在vb的已经调试成功
在asp页面调用dll时
如果
1.set oConn=server.createobject("ADODB.connection") 
set oConn=P_OaSys.Gf_SetConn()
则可以用rs.open fs_sql,oConn,1,1,但不能oconn.exeucte("insert into temp1(name) values('aa')"
3.
set oConn=server.createobject("ADODB.connection") 
oConn=P_OaSys.Gf_SetConn()
则不能用rs.open fs_sql,oConn,1,1,但可以oConn.exeucte("insert into temp1(name) values('aa')"

#20


set oConn=server.createobject("ADODB.connection") 
set oConn=P_OaSys.Gf_SetConn()
这样可以rs.open fs_sql,oConn,1,1是不是说明set oConn=P_OaSys.Gf_SetConn()起了作用而set oConn=server.createobject("ADODB.connection")没起作用呢;

set oConn=server.createobject("ADODB.connection")
oConn=P_OaSys.Gf_SetConn()
这样可以oConn.exeucte("insert into temp1(name) values('aa')"是不是说明set oConn=server.createobject("ADODB.connection")起了作用而oConn=P_OaSys.Gf_SetConn()没呢?

你再测试一下,估计就是这几个地方!

#21


set oConn=P_OaSys.SetConn()  ??? SetConn()

set oConn=P_OaSys.Gf_SetConn() ??? Gf_SetConn()


Gf_SetConn哪来的?

#22


dll内的函数

#23



我碰到的问题跟它恰恰相反

set rs=conn.execute(sql)  能得到结果集
rs.open sql,conn,1,1 不能得到结果集,
请问高手,这是为什么

#1


跟你的sql语句有关
能不能贴出来??

#2


1,1
不能执行update,呵呵

#3


对把你的SQL语句贴出来!

#4


数据库的链接用VB做成用dll,我在VB里测试能通过,到了asp页面就不行了,sql语句是正确的
Ps_ConnStr = "driver={SQL Server};Database=office;Pwd=1;Uid=user;Server=192.168.1.70"
conn.open Ps_ConnStr 

set rs=server.createobject("adodo.recordset")
rs.open "select * from temp",conn,1,1    ---这句会出错

conn.execute ("select * from temp")    ---这句不会出错

#5


使用
set rs=server.createobject("adodo.recordset")

必须指定游标,即前面的1(可选值0,1,2,3)
后面的1为锁定类型(可选值1,2,3),可以不指定
rs.open sql,conn,1,1

set rs=conn.execute(sql),其实数据库已经指定了默认游标


#6


我只要得出结果集就行了,不需要update,而且要rs.open sql,conn 的这种
因为我是改别人的程序,现在把数据库的链接做成dll,
现有的程序都是用rs.open sql,conn 来打开数据集,我晕啊:(,哭.....

#7


用这个试试看吧:
rs.cursorlocation=3
rs.open sql,conn,3,2

#8


To  lienzhu(李强) 
不指定游标类型也不行,
  rs.open sql,conn  ---也行不通

#9


comszsoft(星星点灯) 的方法也不行
555555555555........

#10


rs.open sql,conn,1,3

#11


把dll代码贴出来看看
信誉91..........-__,-

#12


set rs=server.createobject("adodo.recordset") ??? ("Adodb.Recordset")

#13


呵呵,我的信誉分怎么这么少:(

Private Sub SetConnStr()
    Dim fs_dbtype, fs_dbsource
    On Error GoTo Err
    If Ps_databaseip = "" Then
       P_Response.Write "数据库路径设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    If Ps_databasename = "" Then
       P_Response.Write "数据库设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    If Ps_databaseLoginName = "" Then
       P_Response.Write "数据库用户名设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    If Ps_databasePws = "" Then
       P_Response.Write "数据库密码设置错误,请与系统管理员联系!"
        P_Response.End
       Exit Sub
    End If
    Ps_ConnStr = "driver={SQL Server};Database=" & Ps_databasename & "; Pwd=" & Ps_databasePws & ";Uid=" & Ps_databaseLoginName & ";Server=" & Ps_databaseip
    Exit Sub
Err:
  Call myErr
End Sub

Public Function SetConn() As ADODB.Connection
 
    Call SetConnStr
    
    Set P_Conn = New ADODB.Connection
    P_Conn.CommandTimeout = 30
    P_Conn.ConnectionTimeout = 30
    On Error GoTo Err
    P_Conn.Open Ps_ConnStr
    Set SetConn = P_Conn
    Exit Function
Err:
    Call myErr
End Function

*************asp页面调用***************
Set P_OaSys =Server.CreateObject("OaSys.Encrypt")
Set P_OaSys.P_Response=Response
set oConn=server.createobject("ADODB.connection")
set oConn=P_OaSys.SetConn()
set rs=server.CreateObject("ADODB.Recordset")
fs_sql="select * from temp1"
set rs=oconn.execute (fs_sql)  --这句能返返回结果集
‘rs.open fs_sql ,oConn         --这句就出错了,
                              --变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。
Response.write(rs.eof)

#14


我的QQ  258032048

#15


adodb.recordset

楼主是不是写错了

#16


同志们再帮帮我啊,叩谢!

#17


你直接在VB里边测试一下看看用rs.open fs_sql,oConn,1,1能不能得到数据先,调试成功后参照着改回到ASP里边去!

#18


呵呵,典型的连接错误,你在开指针前conn未打开:
conn .open
将你的方向键改为万能方向键:1,3
rs.open sql,conn,1,3

#19


在vb的已经调试成功
在asp页面调用dll时
如果
1.set oConn=server.createobject("ADODB.connection") 
set oConn=P_OaSys.Gf_SetConn()
则可以用rs.open fs_sql,oConn,1,1,但不能oconn.exeucte("insert into temp1(name) values('aa')"
3.
set oConn=server.createobject("ADODB.connection") 
oConn=P_OaSys.Gf_SetConn()
则不能用rs.open fs_sql,oConn,1,1,但可以oConn.exeucte("insert into temp1(name) values('aa')"

#20


set oConn=server.createobject("ADODB.connection") 
set oConn=P_OaSys.Gf_SetConn()
这样可以rs.open fs_sql,oConn,1,1是不是说明set oConn=P_OaSys.Gf_SetConn()起了作用而set oConn=server.createobject("ADODB.connection")没起作用呢;

set oConn=server.createobject("ADODB.connection")
oConn=P_OaSys.Gf_SetConn()
这样可以oConn.exeucte("insert into temp1(name) values('aa')"是不是说明set oConn=server.createobject("ADODB.connection")起了作用而oConn=P_OaSys.Gf_SetConn()没呢?

你再测试一下,估计就是这几个地方!

#21


set oConn=P_OaSys.SetConn()  ??? SetConn()

set oConn=P_OaSys.Gf_SetConn() ??? Gf_SetConn()


Gf_SetConn哪来的?

#22


dll内的函数

#23



我碰到的问题跟它恰恰相反

set rs=conn.execute(sql)  能得到结果集
rs.open sql,conn,1,1 不能得到结果集,
请问高手,这是为什么