在 ADP 中用 VBA 代码调用有参数“存储过程”和“函数”:『当前』.『连接』.『执行』(参数)
CurrentProject.Connection.Execute ("dbo.存储过程 " & 控件1 & ",'" & 控件2 & "'," & 控件3)
用这种方法可以在 ADP 的 VBA 调用“存储过程”和“SQL函数”时用“控件”或“变量”传递参数,
编辑“存储过程”时,记得在“属性”调整参数顺序和数据类型,“从上到下”对应“从左到右”,
“字符”参数要用单引号''括住,如‘控件2’和‘参数2’,“货币”和“数值”不要用单引号括住。
如果“存储过程”或“函数”设置了默认参数,在调用时缺少参数就会用默认值,如果没有设置默认值,就会弹出对话框,要求输入参数。
还可以用这种方法执行“动态SQL”语句时传递参数。
在 T-SQL 语句中,没有 iif() 函数,IsNull(判断,返回)有两个参数,不同 VBA 函数,传给 SQL2000 时
要分清楚那部分在 VBA 运行,那部分在 SQL2000 运行。
代替“域聚合函数”用“GetString”方法从“Recordset”返回一个字符串。
注意:返回的“字符串”尾附加回车符。存入表再取出来 对比 不相等。
[控件] = CurrentProject.Connection.Execute("dbo.存储过程 " & 参数1 & ",'" & 参数2 & "'," & 参数3).GetString
在“组合框”的行来源,没有“输入参数”,要引用控件,可以用记录集:(“存储过程”不能作为表。)
Set Me.Combox.Recordset = CurrentProject.Connection.Execute("SELECT 地区 FROM dbo.函数(" & 控件1 & ",'" & 控件2 & "'," & 控件3 & ") GROUP BY 地区")
[此贴子已经被作者于2004-10-26 10:43:46编辑过]
|