|
我建了这样一个存储过程如下: 其中d1/d2是查询起止时间,idd是查询序号
ALTER proc db_query1 @d1 datetime ,@d2 datetime =@d1 ,@idd tinyint as
if @idd =1 /*PTV销售*/ begin select........................
return end
if @idd =2 /*dl光电销售*/ begin select........................
return end
if @idd =3 --批发退机 begin delete wangj.dbo.db_tuiji insert into wangj.dbo.db_tuiji select ....................... update wangj.dbo.db_tuiji set 类别='RGB' FROM ..................... update wangj.dbo.db_tuiji set 类别='DG' FROM ....................... select * from wangj.dbo.db_tuiji return end
以下是我在vba中使用这个存储过程的部份代码:
With rst .ActiveConnection = conn .CursorLocation = adUseServer .CursorType = adOpenForwardOnly .LockType = adLockReadOnly .Open "db_query1 '" & Ds & "','" & De & "'," & QueryIdd If .EOF Then MsgBox Ds & " ~ " & De & " 期间的“" & txtIDD & "”无数据...", vbOKOnly, "信息" End End If End With
当queryidd=1或者2时,,程序能正常执行 ,但queryidd=3时,不正常执行
.Open "db_query1 '" & Ds & "','" & De & "'," & QueryIdd
总是没有打开记录集,导致 下一句 If .EOF Then 出错,提示"对象已关闭,不能操作"
而我在sql查询分析器中执行
db_query1 '2003-1-1','2003-1-2',3
则能得到所要的记录集,即"select * from wangj.dbo.db_tuiji"
分析以上结果,当idd=3时的操作查询语句共有四句,而1/2只有一个比较复杂的选择查询
现在的问题:如何修改以上存储过程中的if @idd =3 段的sql语句,(我要对tuiji表先删除原记录,再添加,再二次update修改,最后想得到tuiji表的结果记录)
谢谢
|
|