我在访问时使用下面的传递查询代码。代码不是问题。我的问题是在访问时创建一个表单,该表单在指定的位置输入varible并从que SQL select中返回表。常规解决方案:[表单]![变量]不起作用,因为传递查询并不支持我想象(我不是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 :(得分: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只是一个保存的pass-though查询,您可以在代码中反复使用该查询,以查找您希望的任何T-sql或服务器端命令。
如上所述,您必须分享有关您希望如何处理传递查询的其他信息(例如分配到记录集,组合框,报告甚至表单记录源 - 因此需要添加信息完成这个问题,但上面提供了一个工作示例。