2017-09-12 35 views
0

我在下面的訪問中使用傳遞查詢代碼。代碼不是問題。我的問題是在訪問時創建一個表單,並在指定的地方輸入varible,並從que select 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' 
+0

您的意思是[參數查詢](https://stackoverflow.com/questions/16568461/is-it-possible-to-pass-parameters-programmatically- in-a-microsoft-access-update)?[passthrough query](https://support.office.com/zh-cn/article/Process-SQL-on-a-database-server-by-using-a -pass-through-query-B775AC23-8A6B-49B2-82E2-6DAC62532A42) – BitAccesser

回答

0

你沒有提到你想要處理這個查詢的結果嗎?

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

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

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或服務器端命令。

如上所述,您必須共享關於您想要對傳遞查詢做什麼的附加信息(例如分配給記錄集,組合框,報表,甚至可能是表單記錄源 - 因此需要添加信息來完成這個問題,但上面提供了一個工作示例

+0

嗨艾伯特,我想要的是:建立一個表單,我輸入變量,它返回我這個查詢結果,還有,我們es查詢的第一個元素作爲源在另一個表中選擇一個值。你認爲這是可能的嗎? –