急!VB调用sql存储过程问题,定义了两个存储过程但是程序只调用插入那个存储过程,求解
分别定义了两个存储过程,MyAdd和MyUpdate,以下是调用PrivateSubCmdAdd_Click()CmdAdd.Enabled=FalseCmdDel.En...
分别定义了两个存储过程,MyAdd和MyUpdate,以下是调用
Private Sub CmdAdd_Click()
CmdAdd.Enabled = False
CmdDel.Enabled = False
CmdUpdate.Enabled = True
CmdCancel.Enabled = True
Call ExeCuteSql("MyAdd")
Adodc1.CommandType = adCmdText
Adodc1.Refresh
End Sub
Private Sub CmdUpdate_Click()
CmdAdd.Enabled = True
CmdDel.Enabled = True
CmdCancel.Enabled = False
Call ExeCuteSql("MyUpdate")
Adodc1.CommandType = adCmdText
Adodc1.Refresh
End Sub 展开
Private Sub CmdAdd_Click()
CmdAdd.Enabled = False
CmdDel.Enabled = False
CmdUpdate.Enabled = True
CmdCancel.Enabled = True
Call ExeCuteSql("MyAdd")
Adodc1.CommandType = adCmdText
Adodc1.Refresh
End Sub
Private Sub CmdUpdate_Click()
CmdAdd.Enabled = True
CmdDel.Enabled = True
CmdCancel.Enabled = False
Call ExeCuteSql("MyUpdate")
Adodc1.CommandType = adCmdText
Adodc1.Refresh
End Sub 展开
1个回答
展开全部
1、首先不知道你写的两个存储过程 "MyAdd" 和"MyUpdate" 里面的内容是怎么写的?正确与否?你要在SQL中进行验证,然后再到VB中进行调用
其次在调用有参数的存储过程时,要注意参数定义类型及参数的大小。
也就是说:如果参数是字符型,在传送参数时要注意限制其字符的大小,如果参数是日期型变量,你用 Trim(TextBirthday.Text) 可行否?如果是数字型呢?
所以没看到你的存储过程的话,要找到程序中的错误就难了...
2、我一般调用存储过程的步骤如下:
(A) 如:
定义一个实现“退货单”的审核存储过程.
CREATE PROCEDURE proCheckOutT203(@OrderNum varchar(12),@OperName varchar(10))
AS
..........
BEGIN TRAN
--- 中间复杂的运算省略
--- 设置单据审核标志
UPDATE T203 SET F6=@OperName, F7=GetDate() WHERE F1=@OrderNum
COMMIT
这里的参数OrderNum 为不超过12个字符型,OperName 为10位字符型
(B) 在VB 中调用
Dim adoConn As New ADODB.Connection
adoConn.Open adoConnStr
adoConn.Execute "proCheckOutT203 '" + Trim(Txt(0)) + "','" + UserName + "'"
其中:
adoConnStr 连接SQL的连接字符串
Trim(Txt(0)) 为单据编号 的 TextBox 控件
UserName 为操作员姓名的变量
一般这样就OK 了....
其次在调用有参数的存储过程时,要注意参数定义类型及参数的大小。
也就是说:如果参数是字符型,在传送参数时要注意限制其字符的大小,如果参数是日期型变量,你用 Trim(TextBirthday.Text) 可行否?如果是数字型呢?
所以没看到你的存储过程的话,要找到程序中的错误就难了...
2、我一般调用存储过程的步骤如下:
(A) 如:
定义一个实现“退货单”的审核存储过程.
CREATE PROCEDURE proCheckOutT203(@OrderNum varchar(12),@OperName varchar(10))
AS
..........
BEGIN TRAN
--- 中间复杂的运算省略
--- 设置单据审核标志
UPDATE T203 SET F6=@OperName, F7=GetDate() WHERE F1=@OrderNum
COMMIT
这里的参数OrderNum 为不超过12个字符型,OperName 为10位字符型
(B) 在VB 中调用
Dim adoConn As New ADODB.Connection
adoConn.Open adoConnStr
adoConn.Execute "proCheckOutT203 '" + Trim(Txt(0)) + "','" + UserName + "'"
其中:
adoConnStr 连接SQL的连接字符串
Trim(Txt(0)) 为单据编号 的 TextBox 控件
UserName 为操作员姓名的变量
一般这样就OK 了....
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询