2017-09-12 5 views
0

액세스 할 때 아래의 통과 쿼리 코드를 사용하고 있습니다. 코드는 문제가되지 않습니다. 내 문제는 표시된 장소에있는 varible을 입력하고 나에게 SQL 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

[매개 변수 쿼리]를 의미합니다 (https://stackoverflow.com/questions/16568461/is-it-possible-to-pass-parameters-programmatically- in-a-microsoft-access-update)? [패스 스루 쿼리] (https://support.office.com/en-us/article/Process-SQL-on-a-database-server-by-using-a) -pass-through-query-B775AC23-8A6B-49B2-82E2-6DAC62532A42)는 다른 점이 있습니다 – BitAccesser

답변

0

이 쿼리의 결과에 대해 언급하지 않으셨습니까?

모든 통과 쿼리는 읽기 전용입니다. 다음은, 형태 me.SomeControl은 그것이 자유 형식 텍스트 상자의 경우 이후 숫자 열로 제한 말 것을 그것은 가정

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 

:

그러나, 다음과 같은 코드를 사용할 수 있습니다 SQL 인젝션을 엽니 다. QryPass는 단순히 저장된 pass-though 쿼리이므로 원하는 T-SQL 또는 서버 측 명령에 대해 해당 쿼리를 반복해서 사용할 수 있습니다.

앞서 언급했듯이 통과 쿼리 (예 : 레코드 세트, 콤보 상자, 보고서 또는 양식 레코드 소스에 할당)와 관련하여 추가 정보를 공유해야하므로 추가 정보가 필요합니다. 이 문제를 완료하려면 위의 예제를 사용하십시오.

+0

안녕하세요, 알버트, 내가 원하는 것은 : 변수를 입력하는 양식을 작성하면이 쿼리 결과와 나도 함께 반환됩니다. 다른 테이블의 값을 선택하기 위해 쿼리의 첫 번째 요소를 소스로 사용합니다. 그게 가능하다고 생각하니? –