Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过VBA代码调用数据库中的SQL过程_Sql_Ms Access_Vba - Fatal编程技术网

通过VBA代码调用数据库中的SQL过程

通过VBA代码调用数据库中的SQL过程,sql,ms-access,vba,Sql,Ms Access,Vba,我有一个SQL查询,它占用了数据库中存储的一个参数。我想从运行在同一数据库上的VBA代码中调用相同的代码。我正在使用MS Access进行工作 例如,考虑一下,我有一个SQL查询“q”,它取一个参数“p”,我打算从我的VBA代码“C”中调用这个SQL查询,这自然也包括把这个参数“p”传递给查询。 非常感谢你的帮助 Soham这里有一些可能性 假设它是一个基于表单的SELECT查询,该表单保存要使用的参数,并且输入是安全的: s = "SELECT * FROM MyTable WHERE ATe

我有一个SQL查询,它占用了数据库中存储的一个参数。我想从运行在同一数据库上的VBA代码中调用相同的代码。我正在使用MS Access进行工作

例如,考虑一下,我有一个SQL查询“q”,它取一个参数“p”,我打算从我的VBA代码“C”中调用这个SQL查询,这自然也包括把这个参数“p”传递给查询。 非常感谢你的帮助
Soham

这里有一些可能性

假设它是一个基于表单的SELECT查询,该表单保存要使用的参数,并且输入是安全的:

s = "SELECT * FROM MyTable WHERE AText ='" & Me.MyText & "'"
s = "UPDATE MyTable Set AText ='" & Me.MyText & "'"
可以这样使用:

Forms!SomeForm.RecordSource = s

但是,可以用其他更好的方法来实现上述目标

假设它是从一个窗体运行的操作查询,该窗体保存要使用的参数,并且输入是安全的:

s = "SELECT * FROM MyTable WHERE AText ='" & Me.MyText & "'"
s = "UPDATE MyTable Set AText ='" & Me.MyText & "'"
然后

或者可以使用临时查询,这样更安全:

'Temporary query
s = "UPDATE MyTable Set AText = MyRext"

Set qdf = db.CreateQueryDef("", s)

qdf.Parameters!MyText = Me.MyText
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError
类似于上述内容的内容也适用于现有查询

您还可以将参数传递给过程,在这种情况下,Me.MyText将成为一个变量,或者您可以使用Inputbox,这很少是一个好主意


之后,就是整个ADO世界。

您如何连接到数据库?ODBC?你试过什么?这是一个DAO数据库。我只是在VBA代码中使用硬编码的SQL查询,非常感谢。我正在使用VBA代码中的硬编码查询。我将尝试采用其中一些方法。许多银行