调用存储过程, 添加参数后无法输出记录集,求解!!
本帖最后由 dz138 于 2011-12-2 16:02 编辑有存储过程名: WIBF_Summary, 有参数 @year , @Month 主要用于数据筛选输出记录集$Cnn=ObjCreate("ADODB.Connection")
$Cnn.open("DRIVER={SQL Server};SERVER="&$sServer&";UID="&$susername&";PWD="&$spassword&";Database="&$sdatabase)
$Rs=ObjCreate("ADODB.Recordset")
$Comm = ObjCreate("ADODB.Command") ;建一个command对象
With $Comm
.ActiveConnection = $Cnn
.CommandText = "WIBF_Summary" ;定义command 对象调用名称,即存储过程名称
.CommandType = 4 ;设置command调用类型是存储过程
.Prepared = True ;将SQL命令先行编译
.Parameters.Append (.CreateParameter("@Year",3,1,4,$TYear))
.Parameters.Append (.CreateParameter("@Month",3,1,4,$TMonth))
EndWith
$Rs = $Comm.Execute
$x=1
While Not $RS.eof and Not $RS.bof
If @error = 1 Then ExitLoop
if $x=1 then
Local $oExcel = _ExcelBookNew()
For $i = 1 To $colcount ;Loop
_ExcelWriteCell($oExcel, $Rs.Fields($i-1).name,$x, $i )
Next
$x=$x+1
endif
For $i = 1 To $colcount ;Loop
_ExcelWriteCell($oExcel, $Rs($i-1).value,$x, $i )
Next
$x=$x+1
$rs.movenext
wend
;endif
msgbox(0,"完成","完成!")
$Rs.close
$Cnn.close=============================================
无法返回记录集, 求高手解答, 谢谢!! 有个例子。
While Not $RS.eof And Not $RS.bof ; 当记录指针处于第一条记录和最后一条记录之间时,执行while循环
If @error = 1 Then ExitLoop
If $Select_Db = 0 Then ; 当数组二维$Select_Db为0时,重定义数组的第二维大小等于记录集查询到的字段数
ReDim $Select_Db[$RS. Fields . Count + 1] ;$RS.Fields.Count 为记录集查询到的字段数
For $i = 0 To $RS. Fields . Count - 1
$Select_Db[$i + 1] = $RS. Fields ($i). Name ;$RS.Fields($i).Name 为字段名,把字段名存入数组
Next
EndIf
ReDim $Select_Db[$Count + 1][$RS. Fields . Count + 1] ; 数组第一维大小加1,用于存放数据
$Select_Db = $Count ;$Select_Db 存放查询到的数据行数
For $i = 0 To $RS. Fields . Count - 1
$Select_Db[$Count][$i + 1] = $RS. Fields ($i). Value ;$RS.Fields($i).Value 字段数据
Next
$Count += 1 ; 行数加1
$RS. movenext ; 将游标移到下一条数据上
WEnd
谢谢 nivisde
但我的意思是 以上例子如果调用没有参数的存储过程是没有问题的.
一但获取附带了参数的存储过程就出不来了. 不知道你们有没有试过.
数据导出到Excel是没问题的.继续求解!!!
页:
[1]