그래서 두 개의 매개 변수가있는 비교적 간단한 쿼리가 있습니다. 그 중 하나는 폼에서 long을 가져오고 하나의 테이블에서 하나의 필드에 해당 값이있는 레코드 만 선택합니다. (디자인 프로젝트 테이블이며 사용자가 프로젝트를 나열해야하는 디자이너를 선택합니다.)Access 2003 VBA : 쿼리를 직접 실행하면 작동하지만 코드에서 실행하면 런타임 오류 3061이 발생합니까?
양식을 연 다음 수동으로 쿼리를 열면 은 완벽하게으로 작동합니다. 쿼리 결과 목록 상자를 채우는 두 번째 폼이있는 경우 쿼리 결과와 동일한 레코드 집합을 설정하려고하면 "런타임 오류 '3061'이 (가) 실패합니다. 매개 변수가 너무 적습니다 예상되는"
매개 변수를 정적 정수 (예 : 3, 잘 작동합니다 (하지만 분명히 쓸모가 없습니다). 왜 VBA 코드로 인해 폼의 텍스트 필드에서 텍스트를 읽을 수 없습니까? 여기
SELECT [Project Request Log TABLE].Designer1, [Project Request Log TABLE].Priority, [Project Request Log TABLE].ProjectName, [Project Request Log TABLE].Manager, [Project Request Log TABLE].SME1, [Project Request Log TABLE].Priority, [Project Request Log TABLE].ProjectID
FROM Designers INNER JOIN [Project Request Log TABLE] ON Designers.ID = [Project Request Log TABLE].Designer1
WHERE ((([Project Request Log TABLE].Designer1)=[Forms]![frm_selectDesigner]![txtDesignerId]) AND (([Project Request Log TABLE].PercentComplete)<>1))
ORDER BY [Project Request Log TABLE].Designer1, [Project Request Log TABLE].Priority;
오류를 제공 VBA의 라인 :
여기 내 쿼리입니다
Set rst_projects = dbs.OpenRecordset("qryDesignerProjectPrioritySet", dbOpenDynaset)
감사합니다.
편집 : 디자이너를 선택하는 양식에서 위 코드가 레코드 세트를 여는 두 번째 양식을 엽니 다. 원래 frm_selectDesigner는 닫히지 않았으며, 확인을 클릭해도 숨겨져 있지만 열려 있습니다.
편집 2 : 나는 라인
DoCmd.OpenQuery "qryDesignerProjectPrioritySet"
을 포함하는 경우 쿼리가 열리고 올바른 결과가 있습니다. 바로 다음 줄이 위와 같이 해당 쿼리의 결과를 레코드 집합으로 할당하려고하면 3601 오류가 발생합니까? OpenRecordset 명령을 작성하는 방법에 오류가 있어야합니다.
분명히하기 : 'frm_selectDesigner' 양식 *은 다른 양식에서 쿼리를 실행하는 동안 열려 있습니다. 맞습니까? –
* 왜 VBA 코드는 Access 자체가 가능할 때 양식의 텍스트 필드에서 텍스트를 읽을 수 없습니까? * 아마도 VBA가 Access 이외의 컨텍스트에서 사용되기 때문일 수 있습니다. –
[Project Request Log Table] .PercentComplete <> 1 – CarlF