2013-12-23 5 views
1

물고기가 방향을 찾고/조언이 반드시 코드가 아닐지라도 (도움이 될지 모르지만). 저는 생계를 위해 기계를 설계하는 ME이며 엔지니어링 부품 번호에 사용되는 기존 2010 Access 데이터베이스를 자동화하려고합니다. 사용자가 프로젝트 번호를 선택하고 부품 번호 필드에 사용 가능한 다음 부품 번호를 자동으로 표시하도록합니다.컨트롤에서 쿼리 매개 변수에 액세스

다양한 소스의 ADO 및 DAO 예제를 사용하여 양식 컨트롤의 값을 기반으로하는 매개 변수를 선택 쿼리에 전달하지 못했습니다. 다음과 같이 내 최신 시도는 다음과 같습니다

qdf.Parameters("Project") = dblProject 

원본 출처 :

Private Sub ctlProject_AfterUpdate() 

Dim dblProject As Double 

dblProject = Me.ctlProject.Value 

MsgBox "The curret project number is " & dblProject, vbOKOnly, "Project Number" 


Const cstrQueryName As String = "qryDetails" 
Dim dbs As DAO.Database 
Dim qdf As DAO.QueryDef 
Dim rst As DAO.Recordset 

Set dbs = CurrentDb() 
Set qdf = dbs.QueryDefs(cstrQueryName) 
qdf.Parameters("Project") = dblProject 

' Open recordset on the query 
Set rst = qdf.OpenRecordset() 

rst.MoveLast 

Debug.Print ("Project ID: " & rst!Project) 

rst.Close 
qdf.Close 
dbs.Close 

End Sub 

코드가 ". 런타임 오류 '3265'이 컬렉션에서 찾을 수없는 항목"코드 줄에서 유래 생산 코드 here

ADO Command 개체를 사용하여 비슷한 오류가 발생했습니다. 참고 문헌/자료에 대한 도움이나 권장 사항에 크게 감사드립니다. 나는 WROX의 "Access 2003 vba 프로그래머 매뉴얼"과 "Access 2010 : 누락 된 매뉴얼"을 하드 카피 참조로 사용했습니다. 같은 이름의 필드가 있기 때문에

SELECT tblDetails.Project, tblDetails.Number, tblDetails.Title, tblDetails.Initials, 
tblDetails.IssuedOn 
FROM tblDetails 
WHERE (((tblDetails.Project)=[Project])); 
+3

정말 어리석은 질문이지만 오류로 판단하면 'qryDetails' 쿼리에 "Project"라는 매개 변수가 필요합니까? – Lankymart

+1

'qryDetails'에서 SQL을 보여주십시오. – HansUp

+0

@ Lankymart 짧은 대답은 그렇게 생각합니다. @HansUp 요청에 대한 응답으로'qryDetails'에서 SQL보기를 추가했습니다. – user3042766

답변

1

내가 매개 변수 이름으로 프로젝트에 대한 회의적 : 여기

는 qryDetails의 SQL 뷰에서 코드입니다. 예약어이기도하지만, 그것이 여분의 도전인지 여부는 확실하지 않습니다.

수정 qryDetails 매개 변수에 다른 이름을 사용하십시오.

SELECT tblDetails.Project, tblDetails.Number, tblDetails.Title, tblDetails.Initials, 
tblDetails.IssuedOn 
FROM tblDetails 
WHERE (((tblDetails.Project)=[pProject])); 

그리고 그 새 이름을 사용하는 VBA를 수정하는 것을 잊지 마세요 ...

qdf.Parameters("pProject") = dblProject 

여전히 이러한 변경 후 문제가있을 경우, 액세스 쿼리 매개 변수에 대해 어떻게 생각하는지 참조 (에스).

Const cstrQueryName As String = "qryDetails" 
Dim dbs As DAO.Database 
Dim prm As DAO.Parameter 
Dim qdf As DAO.QueryDef 

Set dbs = CurrentDb() 
Set qdf = dbs.QueryDefs(cstrQueryName) 
MsgBox "Parameters.Count: " & qdf.Parameters.Count 
For Each prm In qdf.Parameters 
    MsgBox "Parameter Name: " & prm.Name 
Next 
관련 문제