高手请进:ado控件调用存储过程的问题,急,在线等!

wy23456283 2005-09-28 04:05:37
我在vb6.0中打算用ado控件和datagrid控件,其中datagrid的数据源绑定在adodc控件上,ado控件的数据源打算调用存储过程,可是却始终出错。代码如下:
Private Sub Command1_Click()
Me.Adodc1.ConnectionString = Connstr
Me.Adodc1.CommandType = adCmdUnknown
StrSql = "exec Proc_Kind_SEARCH '电梯',1"
'Me.Adodc1.Refresh
'Me.Adodc1.Recordset.Open
Me.Adodc1.RecordSource = StrSql
'Me.Adodc1.Refresh
Dim res As New ADODB.Recordset
Set res = New ADODB.Recordset
'res.Open strSQL, Connstr, 3, 3
Set Me.DataGrid1.DataSource = Nothing
With res
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open StrSql, Connstr, adOpenKeyset, adLockOptimistic
End With
Me.Adodc1.RecordSource = StrSql
Me.Adodc1.Refresh
Set Me.DataGrid1.DataSource = Nothing
Set Me.DataGrid1.DataSource = Me.Adodc1.Recordset
'Set Me.DataGrid1.DataSource = res
'DataGrid1.Refresh
End Sub
这个和存储过程有关系,我用别的存储过程不会出错,但是这个存储过程不行,存储过程如下:SELECT IDENTITY(INT,1,1) AS '序号' ,Tbl_BasTZSB.Tname as '设备名称',Tbl_BasTZSB.treg as '注册登记号',tsydw as '使用单位',tsbsydd as '设备地点',
tlxr as '联系人',ttel as '电话',filestore.fdate as '检验日期',fjyy as '检验员',fzzr as '打字员',txcjyrq as '下次检验日期', fname as '报告名称',fbianhao as '报告编号'
into #tmd
From tbl_bastzsb left join filestore
on filestore.freg=tbl_bastzsb.treg
and filestore.fdate in (select max(filestore.fdate) as '检验日期' from filestore group by filestore.freg)
where tkind=@keyword
select * from #tmd
drop table #tmd
我是在sql里面新建一个临时表#tmd,用来插入序号进行排序。存储过程用查询分析器做过测试没有问题,可是在vb中调试却老是报错:adodc1:对象关闭时操作不被允许,这是为什么呢?该怎么解决或者是用别的什么办法也行呀,只要能解决就行,分不够可以再加。
...全文
211 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
faysky2 2005-10-19
  • 打赏
  • 举报
回复
可是在vb中调试却老是报错:adodc1:对象关闭时操作不被允许,这是为什么呢?
-----------
这种错误一般是数据库连接或记录集已经关闭,而再次去关闭就会出现那样的错误提示
相对地:如果数据库连接或记录集已经打开,而再次去打开它就会提示这样的错误-->>“对象打开时,操作不被允许”
---------------
解决方法:
在打开或者关闭数据库连接或记录集之前作一个判断:
假设cn是数据库连接对象,rs是记录集对象
cn.ConnectionString="......"
if cn.State=adStateClosed then cn.Open

if rs.state=adstateOpen then rs.Close '如果记录集是打开的则关闭它
if cn.State=adStateOpen then cn.Close'如果数据库连接是打开的则关闭它

faysky2 2005-10-19
  • 打赏
  • 举报
回复
具体是哪句出错?
aiur2000 2005-10-19
  • 打赏
  • 举报
回复
前面加如果对象状态关闭则打开,代码忘了
wy23456283 2005-09-29
  • 打赏
  • 举报
回复
自己顶先,希望高手能看见,分可以再加
wy23456283 2005-09-29
  • 打赏
  • 举报
回复
up
xghim 2005-09-29
  • 打赏
  • 举报
回复
先显式创建临时表(create table #tmd)
然后再试试

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧