2016-07-08 1 views
1

VBA 스크립트를 사용하여 액세스 보고서 중 일부를 자동화하고 싶습니다. 그러나 DoCmd.OpenReport으로 실행하려고 할 때 모든 보고서에 기본 쿼리에서 오는 일부 매개 변수에 대한 팝업이있는 문제가 있습니다. VBA 실행 쿼리를 기반으로 매개 변수가있는 액세스 보고서

PARAMETERS [Time] Text (255); 

내가 많이 봤와 함께 시도 :

이 매개 변수는 쿼리에서 같은 모습입니다

DoCmd.OpenReport "B_My_Report", acViewPreview, , "[Time]= 423" 

하지만이 작동하지 않았다; 여전히 팝업이 나타나며 아무것도 입력하지 않으면 시간 매개 변수가 비어 있기 때문에 쿼리가 실패합니다.

매개 변수 값을 사용하여 보고서를 호출 할 수있는 방법이 있습니까? 매개 변수를 완전히 제거하고 OpenReportwhere 조건을 사용하는 많은 제안을 읽었습니다. 그러나 이러한 검색어는 나를 만들거나 유지 관리하지 않기 때문에 변경할 수 없습니다. 가끔씩 만 실행해야합니다. 따라서 보고서 나 쿼리를 건드리지 않고도 해결책을 얻고 싶습니다.

답변

3

액세스 버전이 2010 년 이상인 경우 DoCmd.SetParameter Method을 고려하십시오. 나는 (id가 기본 키) 매개 변수의 값을 할당 만 일치하는 레코드를 표시하는 보고서를 열 수 있습니다 그럼

PARAMETERS which_id Long; 
SELECT rmy.id, rmy.reportDate, rmy.gainOrLoss 
FROM record_matYields AS rmy 
WHERE rmy.id=[which_id] OR [which_id] Is Null; 

:

이 쿼리는 내 보고서에 대한 레코드 원본입니다 :

DoCmd.SetParameter "which_id", 4 
DoCmd.OpenReport "rptFoo",acViewReport 

또는 쿼리의 WHERE 절에 OR [which_id] Is Null 조건, 내가 널을 할당 할 수 있기 때문에 내가 상관없이 id 값에 포함 된 모든 기록을하려는 경우 보고서를 열기 전에 매개 변수 :!

DoCmd.SetParameter "which_id", Null 
+0

이것은 솔루션 덕분이었습니다. – cedricblaser01

+2

매우 차가워서, 나는 이것에 대해 몰랐다. (오래된 개와 새로운 트릭, 나는 짐작한다) – Andre

+0

'SetParameter'를 알아 차리기 전에 나는 Access 2010을 2 년 동안 사용해왔다. 단지 몇 가지 상황에서만 유용하지만, 이것도 그 중 하나입니다. :-) – HansUp

1

수 없습니다. VBA에서 쿼리를 열면 매개 변수를 제공 할 수 있습니다. 그러나 보고서가 쿼리를 호출하는 유일한 사람이기 때문에 쿼리는 해당 매개 변수를 요청합니다.

쿼리를 변경할 수 없다면이 쿼리를 사용해야합니다.

0

당신은 구문 양식을 사용하여이 보고서를 열 것입니다 양식에서 매개 변수 값을 참조 할 수 있습니다 [폼 이름]! [컨트롤 이름], 쿼리를 변경해야합니다. * [테이블 이름]에서 * time_id = Forms! [양식 이름]! [컨트롤 이름] 을 선택하면 쿼리가 폼의 컨트롤에서 매개 변수를 가져옵니다. 매개 변수를 프롬프트하지 않습니다. 하지만이 양식을 열어 두거나로드 할 때 열어 본 경우에만 작동합니다. 그렇지 않으면 다시 매개 변수처럼 프롬프트됩니다.

Access 2010의 Docmd.setparameter는 유연성과 좋은 프로그래밍을 유지하는 아주 좋은 제안 인 것으로 보입니다.

관련 문제