2012-10-10 5 views
2

, 예를 들어한 쿼리에서 MS-Access의보기로 매개 변수를 전달 하시겠습니까? 당신이 마이크로 소프트 Access에서 쿼리를 정의하면

,

SELECT * FROM T_Employees t WHERE t.LastName=[LastName] 

팝업 대화 상자가 LastName에 대한 값을 입력하라는 표시됩니다. LastName은 명명 된 매개 변수입니다. 하나는 다른 쿼리에서이 뷰를 호출 할 때

CREATE VIEW paramTest AS SELECT * FROM T_Employees t WHERE t.LastName=[LastName] 

는하지만, 매개 변수가 무시됩니다보기를 만들 수 있습니다 여기에서 지금

.... 그래서 하나의 호출 뷰가 위의 방법을 만들어 않습니다

을 다른 쿼리에서 가져 와서 해당 뷰 내에서 명명 된 매개 변수의 값을 지정 하시겠습니까? (선호 VBA없이, 나는 SQuirreL SQL에서보기를 포함하는 쿼리를 작성하기 위해 그것을 사용하려고 노력하고있다).

+0

참고 : Scripts-> Select Select Script를 사용하여 VIEW의 SQL 문의 내용을 다시 검색하면 위에 포함 된 누락 된 WHERE 절이 생성됩니다. – leeand00

+0

또한 SQUirrel SQL에서': paramName' 구문을 사용하여 매개 변수를 포함 할 수 있지만'VIEW'을 그렇게 만들 수는 없다는 것을 알고 있습니다. – leeand00

답변

2

그건 : 해당 쿼리를 실행하는 경우

SELECT * 
FROM T_Employees AS t 
WHERE (((t.LastName)=[LastName])); 

를, DB를 엔진은 pararmeter을 할 [LastName]을 해석하지 않습니다 그래서 매개 변수를 팝업하지 않습니다 매개 변수의 이름이 필드 이름과 같기 때.입니다. 본질적으로 db 엔진은 각 LastName 필드가 자신과 같은 행을 리턴합니다 ... 모든 행.

작동하는 매개 변수 쿼리를 만들려면 매개 변수에 데이터 소스의 필드 이름과 일치하지 않는 이름을 지정하십시오. 그리고 론이 언급했듯이. CREATE VIEW에서는 매개 변수 쿼리를 만들 수 없습니다. 그러나 CREATE PROCEDURE으로 만들 수 있습니다.

CurrentProject.Connection.Execute "CREATE PROCEDURE paramTest " & _ 
    "(Which_LastName TEXT(255)) AS" & vbCrLf & _ 
    "SELECT * FROM T_Employees t WHERE t.LastName=[Which_LastName];" 
+0

다음 매개 변수를 사용하여 쿼리에서 저장 프로 시저를 호출 할 수 있습니까? – leeand00

+1

내가 언급 한 Squirley SQL에서 어떻게 작동하는지 모르겠습니다. pyodbc에서 커서를 열 수 있습니다 : "SELECT * FROM paramTest", "Doe"'... IOW, SQL 문 다음에 매개 변수 값을 포함하십시오. – HansUp

0

보기는 매개 변수를 허용하지 않습니다. 쿼리보다는 테이블에 더 가깝다고 생각하십시오. 일반적으로 매개 변수가 필요할 때 저장 프로 시저가 사용됩니다. 뷰에 매개 변수를 통합하려면 매개 변수 값을 사용하여 테이블을 작성한 다음 VIEW SQL에 포함시켜야합니다. 매개 변수 테이블은 일반적으로 동시 요청 충돌을 피하기 위해 사용자 ID를 포함합니다. CREATE VIEW 문이 SQL로 명명 된 쿼리, paramTest 생성

+0

액세스 저장 프로 시저가 있습니까? – leeand00

+0

SQUirrel SQL에 익숙하지 않아 가정 된 절차가 지원되었습니다. –

+0

그것들은 마치'Objects' 패널에'PROCEDURE'로 나열되어 있습니다. – leeand00