急!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
展开
 我来答
满以柳J7
2013-12-08 · TA获得超过539个赞
知道小有建树答主
回答量:545
采纳率:66%
帮助的人:555万
展开全部
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 了....
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式