首页 文章

如何在表单中使用访问传递查询

提问于
浏览
0

我正在使用下面的传递查询代码进行访问 . 代码不是问题 . 我的问题是在访问时创建一个表单,该表单在指定的位置输入varible并从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'

1 回答

  • 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或服务器端命令 .

    如上所述,您必须共享有关要对传递查询执行的操作的其他信息(例如,分配到记录集,组合框,报表或甚至表单记录源 - 因此需要添加信息才能完成此问题,但上面提供了一个工作实例 .

相关问题