admin

将参数传递给Access中另一个查询的查询

sql

我有一个参数化查询GET_CUSTOMER:

SELECT * FROM Customer WHERE id = [customer_id]

我想从另一个查询中调用此查询,并将其传递给一个参数:

SELECT * FROM GET_CUSTOMER(123)

请注意,上面的代码无效,它是在这里让您了解我正在尝试执行的操作。是否可以在MS Access中执行此操作?

更新1:

例如,我发布的查询。实际查询要复杂得多。我知道我可以使用表联接,但是在我的特定情况下,如果我可以在其他查​​询(也已参数化)中运行参数化查询,则会容易得多。我无法使用访问表单,因为我在.NET应用程序中使用访问。


阅读 149

收藏
2021-07-01

共1个答案

admin

这就是我最终在https://codingdict.com/questions/220955帮助下解决此问题的方式。事实证明,Access在所有查询之间共享参数,因此无需专门将参数从一个查询传递给另一个查询。

查询1:

SELECT * FROM Customer WHERE ID > [param1] AND ID < [param2]

查询2:

SELECT * FROM Query1

VB.NET代码:

    Dim ConnString As String = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=Database.mdb"
    Dim SqlString As String = "Query2"
    Using Conn As New OleDbConnection(ConnString)
        Using Cmd As New OleDbCommand(SqlString, Conn)
            Cmd.CommandType = CommandType.StoredProcedure
            Cmd.Parameters.AddWithValue("param1", "1")
            Cmd.Parameters.AddWithValue("param2", "3")
            Conn.Open()
            Using reader As OleDbDataReader = Cmd.ExecuteReader()
                While reader.Read()
                    Console.WriteLine(reader("ID"))
                End While
            End Using
        End Using
    End Using
2021-07-01