◎请教高手◎ 在VB中获取Return参数和多记录集的奇怪问题。
/***********************************************************/
--假设存储过程如下:
Create proc Test3
@EName varchar(50),
@CName varchar(10),
@Count1 int output,
@Count2 int output
as
select @Count1 =100 '返回参数1
Select @Count2 = 200 '返回参数2
select Employee_Name from Employee '返回记录集1
Select Company_Name from Company '返回记录集2
return 1000 '返回值
***********************************************************/
Dim rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim Prm1 As ADODB.Parameter
Dim Prm2 As ADODB.Parameter
Dim Prm3 As ADODB.Parameter
Dim Prm4 As ADODB.Parameter
Dim Prm5 As ADODB.Parameter
cmd.CommandText = "Test3"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = connMain
Set Prm1 = cmd.CreateParameter(, adVarChar, adParamInput, 50, "李")
Set Prm2 = cmd.CreateParameter(, adVarChar, adParamInput, 10, "科技")
Set Prm3 = cmd.CreateParameter(, adInteger, adParamOutput)
Set Prm4 = cmd.CreateParameter(, adInteger, adParamOutput)
Set Prm5 = cmd.CreateParameter(, adInteger, adParamReturnValue)
With cmd.Parameters
.Append Prm5
.Append Prm1
.Append Prm2
.Append Prm3
.Append Prm4
End With
Set rs1 = cmd.Execute
debug.print cmd.Parameters(0).Value & " " & cmd.Parameters(3).Value & " " & cmd.Parameters(4).Value
set rs2 = rs1.NextRecordset
.....
问题:
1、如果将“Set rs1 = cmd.Execute”改为“cmd.Execute”,可以正确获取三个参数,但这样就获取不到记录集了。请问既能返回三个参数,又能获取记录集。(50分)
2、如果在存储过程中将两个Select语句去掉之后,则不管用“Set rs1 = cmd.Execute”还是“cmd.Execute”,都可以正确获取三个参数。难道Select语句对返回参数有什么影响吗。请问是什么原因,在写存储过程或者写VB代码是应注意些什么?(40)
3、Prm5是存储过程的Return参数,如果把 append Prm5语句放在 append prm4之后,则提示“为过程和函数Test3指定了过多的参数”。难道Return参数必须放在最前面Append吗?请问是什么原因?(10)
--假设存储过程如下:
Create proc Test3
@EName varchar(50),
@CName varchar(10),
@Count1 int output,
@Count2 int output
as
select @Count1 =100 '返回参数1
Select @Count2 = 200 '返回参数2
select Employee_Name from Employee '返回记录集1
Select Company_Name from Company '返回记录集2
return 1000 '返回值
***********************************************************/
Dim rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim Prm1 As ADODB.Parameter
Dim Prm2 As ADODB.Parameter
Dim Prm3 As ADODB.Parameter
Dim Prm4 As ADODB.Parameter
Dim Prm5 As ADODB.Parameter
cmd.CommandText = "Test3"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = connMain
Set Prm1 = cmd.CreateParameter(, adVarChar, adParamInput, 50, "李")
Set Prm2 = cmd.CreateParameter(, adVarChar, adParamInput, 10, "科技")
Set Prm3 = cmd.CreateParameter(, adInteger, adParamOutput)
Set Prm4 = cmd.CreateParameter(, adInteger, adParamOutput)
Set Prm5 = cmd.CreateParameter(, adInteger, adParamReturnValue)
With cmd.Parameters
.Append Prm5
.Append Prm1
.Append Prm2
.Append Prm3
.Append Prm4
End With
Set rs1 = cmd.Execute
debug.print cmd.Parameters(0).Value & " " & cmd.Parameters(3).Value & " " & cmd.Parameters(4).Value
set rs2 = rs1.NextRecordset
.....
问题:
1、如果将“Set rs1 = cmd.Execute”改为“cmd.Execute”,可以正确获取三个参数,但这样就获取不到记录集了。请问既能返回三个参数,又能获取记录集。(50分)
2、如果在存储过程中将两个Select语句去掉之后,则不管用“Set rs1 = cmd.Execute”还是“cmd.Execute”,都可以正确获取三个参数。难道Select语句对返回参数有什么影响吗。请问是什么原因,在写存储过程或者写VB代码是应注意些什么?(40)
3、Prm5是存储过程的Return参数,如果把 append Prm5语句放在 append prm4之后,则提示“为过程和函数Test3指定了过多的参数”。难道Return参数必须放在最前面Append吗?请问是什么原因?(10)
...全文
相关推荐
founder的字vb4两个的组合,会产生什么奇怪的问题?开发的过程都需要帮助
founder的字vb4两个的组合,会产生什么奇怪的问题?开发的过程都需要帮助
精彩编程与编程技巧-vb6在处理数据库时的几个“BUG”...
精彩编程与编程技巧-vb6在处理数据库时的几个“BUG” ...
VB支持图片拖拉变形的图片浏览器
内容索引:VB源码,图形处理,浏览器 VB支持图片拖拉变形的图片浏览器,有点奇怪的功能,源代码还有一些小问题,第一次打开若没有设置存储图片的目录,程序会报错,不过手功浏览到目录后,就正常运行了。点击两侧的箭头可实现上一张、下一张播放,更奇特的功能是如果你按住鼠标拖动图片的话,图片会像是一张布一样,会有惯性的感觉你的拖动方向,而随着变形,很逗人。
VB 将小写数字金额格式化为大写金额.rar
VB 将小写数字金额格式化为大写金额,这一个相比其它的金额数字转换,是自动转换,用户输入完小写数字金额后,程序将自动把小写数字变为大写,不过奇怪的是,在代码中并没有发现转换功能写在哪里,看到有数据库,莫非大写字符都存储于数据库吗?本例最终的运行效果如下图所示,用户在金额(大写)处输入小写的数字,可以输入小数点,然后单击其它空白处,程序会自动将小写金额转换成大写状态。
一个奇怪的游戏的源程序(我没有明白这个游戏的意义)(8KB)
一个奇怪的游戏的源程序(我没有明白这个游戏的意义)(8KB)


数据库(包含打印,安装,报表)
