运用实例和场景:
excel中的用户窗体,根据窗体中输入的共用参数,提供n个不同的命令按钮,所有这些命令按钮都调用不同的存储过程,但这些存储均携带参数,而这些参数都来源于窗体中的共用参数。
要求是当命令1按钮被单击执行时,调用的连接mysql=存储过程1
当命令2按钮被单击执行时,调用的连接mysql=存储过程2
当命令3按钮被单击执行时,调用的连接mysql=存储过程3
依此类推。代码区中,如何准确判断各个命令按钮是否被单击,以及单击后执行mysql的连接并将结果返回呢?代码:Function 提取合同数据查询(ByVal tbdydm, ByVal tbordernum, ByVal tbconnum, ByVal tbcustname, ByVal dtkssj, ByVal dtjssj) As Boolean
提取合同数据查询 = True
Dim mycn As New ADODB.Connection
Dim myrst As New ADODB.Recordset
Dim cwR, cwC, cwF, cwi, ii As Integer
Dim mysql
mycn.CursorLocation = adUseClient
mycn.Open Sheets("sys").Range("B43") '连接数据库
mysql = "" '定义查询
If cmdrzymatching = 1 Then
mysql = "exec fsrzymatching '" & tbdydm & "','" & tbconnum & "','" & dtkssj & "','" & dtjssj & "'"
End If
'MsgBox mysql
myrst.Open mysql, mycn, adOpenStatic, adLockBatchOptimistic '执行查询
Sheets("xtmp").Visible = True
Sheets("xtmp").Activate
Cells.Select
Selection.Delete Shift:=xlUp
cwR = 2
cwC = 1 'Excel中目的区域的起始列号
cwi = 0 'SQL-fskucun-fsxall 中的字段序号
cwF = myrst.Fields.Count - 1 '查询返回的记录的字段数
ii = myrst.Fields.Count
For i = 1 To ii
Sheets("xtmp").Cells(1, i) = myrst.Fields(i - 1).Name
Next i
While Not myrst.EOF
For cwi = 0 To cwF
Sheets("xtmp").Cells(cwR, cwi + cwC).Rows.Value = myrst.Fields(cwi).Value
Next cwi
cwR = cwR + 1
myrst.MoveNext
Wend myrst.Close '关闭结果集
mycn.Close '关闭连接
Set mycn = Nothing
Sheets("xtmp").Cells.EntireColumn.AutoFit
End Function
excel中的用户窗体,根据窗体中输入的共用参数,提供n个不同的命令按钮,所有这些命令按钮都调用不同的存储过程,但这些存储均携带参数,而这些参数都来源于窗体中的共用参数。
要求是当命令1按钮被单击执行时,调用的连接mysql=存储过程1
当命令2按钮被单击执行时,调用的连接mysql=存储过程2
当命令3按钮被单击执行时,调用的连接mysql=存储过程3
依此类推。代码区中,如何准确判断各个命令按钮是否被单击,以及单击后执行mysql的连接并将结果返回呢?代码:Function 提取合同数据查询(ByVal tbdydm, ByVal tbordernum, ByVal tbconnum, ByVal tbcustname, ByVal dtkssj, ByVal dtjssj) As Boolean
提取合同数据查询 = True
Dim mycn As New ADODB.Connection
Dim myrst As New ADODB.Recordset
Dim cwR, cwC, cwF, cwi, ii As Integer
Dim mysql
mycn.CursorLocation = adUseClient
mycn.Open Sheets("sys").Range("B43") '连接数据库
mysql = "" '定义查询
If cmdrzymatching = 1 Then
mysql = "exec fsrzymatching '" & tbdydm & "','" & tbconnum & "','" & dtkssj & "','" & dtjssj & "'"
End If
'MsgBox mysql
myrst.Open mysql, mycn, adOpenStatic, adLockBatchOptimistic '执行查询
Sheets("xtmp").Visible = True
Sheets("xtmp").Activate
Cells.Select
Selection.Delete Shift:=xlUp
cwR = 2
cwC = 1 'Excel中目的区域的起始列号
cwi = 0 'SQL-fskucun-fsxall 中的字段序号
cwF = myrst.Fields.Count - 1 '查询返回的记录的字段数
ii = myrst.Fields.Count
For i = 1 To ii
Sheets("xtmp").Cells(1, i) = myrst.Fields(i - 1).Name
Next i
While Not myrst.EOF
For cwi = 0 To cwF
Sheets("xtmp").Cells(cwR, cwi + cwC).Rows.Value = myrst.Fields(cwi).Value
Next cwi
cwR = cwR + 1
myrst.MoveNext
Wend myrst.Close '关闭结果集
mycn.Close '关闭连接
Set mycn = Nothing
Sheets("xtmp").Cells.EntireColumn.AutoFit
End Function
mysql = "" '定义查询
If cmdrzymatching = 1 Then
mysql = "exec fsrzymatching '" & tbdydm & "','" & tbconnum & "','" & dtkssj & "','" & dtjssj & "'"
End If
修改成这样的类似结构:
mysql=""
if 命令1被单击 then
mysql=存储过程1
endif
if 命令2被单击 then
mywql=存储过程2
endif
。
命令2按钮_Click 执行 RunSql(2)runsql函数
根据传入的参数判断执行什么sql
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/