簡體   English   中英

如何在表單中使用訪問傳遞查詢

[英]How to use access pass-through query in a form

我在訪問時使用下面的傳遞查詢代碼。 代碼不是問題。 我的問題是要在訪問時形成一個表格,在指定的位置輸入變量,然后從que SQL select中返回表。 常規解決方案:[Form]![Variable]不起作用,因為我想直通查詢不支持它(我不是Access專家)。 有人對此問題有解決方案嗎?

SELECT instalacao
    ,tipounidade
FROM sgdprd.useccionadora us
INNER JOIN (
    SELECT bloco
    FROM sgdprd.redeprimaria rp
    WHERE rp.useccionadora IS NOT NULL CONNECT BY rp.nox = PRIOR rp.fontex
        AND rp.noy = PRIOR rp.fontey START
    WITH rp.utransformadora = (
            SELECT utransformadora
            FROM sgdprd.redeprimaria rp
            INNER JOIN sgdprd.consumidor con ON rp.utransformadora = con.instalacao
            WHERE con.conta = '**VARIABLE GOES HERE**'
            )
    ) lista ON lista.bloco = us.instalacao
WHERE us.tipounidade = 'DJ'
    OR us.tipounidade = 'RL'

您沒有提及要對該查詢的結果做什么?

任何傳遞查詢都是只讀的。

但是,您可以使用以下代碼:

Dim strSQL As String

strSQL = "your sql goes here where con.contra='[P1]' bla bla"

strSQL = Replace(strSQL, "[P1]", Me.SomeControl)

With CurrentDb.QueryDefs("QryPass")
   .SQL = strSQL
End With

假定表單中的me.SomeControl被限制為一個數字列,因為如果它是自由格式的文本框,則您可以進行sql注入。 QryPass只是一個保存的傳遞查詢,您可以在代碼中一遍又一遍地重復使用該查詢,以獲取所需的任何T-sql或服務器端命令。

如前所述,您必須共享有關傳遞查詢要執行的操作的其他信息(例如,分配給記錄集,組合框,報表甚至表單記錄源),因此需要其他信息才能解決此問題,但以上提供了一個有效的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM