我在后台定义了一个存储过程,现在程序中COMMAND对象调用,可当我只是初始化完COMMAND,还未对其中的输入参数进行赋值时,Parameters 中就已经有8个参数,一个为返回参数,剩余7个为输入参数,但没有具体的值。
初始化代码:
set comd = NEW ADODB.COMMAND
With comd
.ActiveConnection = Conn.Connector
.CommandType = adCmdStoredProc
.CommandText = "Proc_create_server"
End With
换别的存储过程不会出现这样的问题, 请各位大虾赐教,谢谢,在线等........
初始化代码:
set comd = NEW ADODB.COMMAND
With comd
.ActiveConnection = Conn.Connector
.CommandType = adCmdStoredProc
.CommandText = "Proc_create_server"
End With
换别的存储过程不会出现这样的问题, 请各位大虾赐教,谢谢,在线等........
http://blog.csdn.net/online/archive/2004/08/05/66376.aspx
comd.commandtext="proc_create_server"
后还没等我往里添加参数comd.parameters 中就已经有8个变量了。
这让我很困惑,还劳烦各位再指条明路,谢谢~~!!!
后还没等我往里添加参数comd.parameters 中就已经有8个变量了。是啊,然后你赋值啊
以往调用过程时初始化完COMMAND对象实例后 COMMAND的Parameters集合都是空的。
请问这是怎么回事??谢谢。
CREATE PROCEDURE Proc_Create_Server
@Department varchar(50),@Name varchar(100),@Program varchar(1000),@Information text,@Law varchar(200) ,@Acceptance AS varchar(50),@Departmentid varchar(50)
as
declare @Count int,@Id varchar(8)
set @Count =(select count(Id) from server where id like @Departmentid +'%')+1
if @Count < 10
set @Id=char(39)+(@Departmentid +'0'+Cast(@Count as varchar(100)))+char(39)
else
set @Id=char(39)+(@Departmentid+Cast(@Count as varchar(100)))+char(39)
set @departmentid =char(39)+@departmentid+char(39)
begin transaction
exec
(' Insert into server values( '+@Id+ ','+@name+ ','+@program+','+@information+ ','+@law+ ','+@acceptance+ ','+@department+','+@departmentid+' )
')
Commit
GO
/*=======================程序代码=============================*/
Private btn_ok_Click()
Dim Para As ADODB.Parameter
Dim paraname As Variant
Dim paravalue As Variant
Set Conn = New Connector
Set comd = New ADODB.Command
Set Para = New ADODB.Parameter
paraname = Array("@department", "@name", "@program", "@information", "@law", "@acceptance", "@departmentid")
paravalue = Array("'" + Combo1.Text + "'", "'" + Text1.Text + "'", "'" + RichTextBox3.Text + "'", "'" + RichTextBox1.Text + "'", "'" + RichTextBox2.Text + "'", "'" + Text3.Text + "'", Text2.Text)
Conn.OpenConnection
With comd
.ActiveConnection = Conn.Connector
.CommandType = adCmdStoredProc
.CommandText = "Proc_create_server"
End With
While comd.Parameters.Count <> 0
comd.Parameters.Delete (comd.Parameters.Count - 1)
Wend
For i = 0 To 6
With Para
.Name = paraname(i)
.Type = adVarChar
.Size = 100
.Value = paravalue(i)
End With
comd.Parameters.Append Para
Set Para = New ADODB.Parameter
Next
comd.Execute affected
If affected = 1 Then
MsgBox "添加成功", vbInformation, "提示"
Else
MsgBox "添加失败", vbCritical, "错误"
end sub
While comd.Parameters.Count <> 0
comd.Parameters.Delete (comd.Parameters.Count - 1)
Wend
就是删除已存在的哪8个变量,清空Parameters集合。
通常在调用过程时执行完该循环以上的代码后,Parameters集合就应该是空的。