VBA를 사용하여 Access 2007 쿼리에서 매개 변수를 설정하는 방법이 있는지 알고 싶습니다. Access에서 VBA를 처음 사용하고 있으며 기존 앱에 기능을 추가하는 작업을 수행했습니다.보고서의 공개 이벤트에 매개 변수를 매개 변수 쿼리에 전달 (Access 2007)
내가 겪고있는 문제는 응용 프로그램의 두 곳에서 같은 보고서를 호출 할 수 있다는 것입니다. 첫 번째는 데이터 입력 양식의 명령 단추에 있고, 다른 하나는 교환 단추입니다. 보고서 자체는 사용자가 공급자 ID를 입력해야하는 매개 변수 쿼리를 기반으로합니다.
사용자는 데이터 입력 양식에 Supplier ID를 입력하지 않아도되지만 (양식에 Supplier ID가 이미 표시되어 있기 때문에), 교환기에서 Supplier ID를 입력하라는 메시지가 표시됩니다.
내가 멈추는 곳은 보고서의 공개 이벤트에서 보고서의 쿼리를 호출하고 양식에서 SupplierID를 매개 변수로 전달하는 방법입니다. 나는 잠시 동안 노력해 왔고, 나는 올바르게 작동하는 것을 얻을 수 없다. 지금까지 제 코드가 있습니다 만, 분명히 난처한 상황입니다.
개인 서브 Report_Open (정수로 취소)
Dim intSupplierCode As Integer
'Check to see if the data entry form is open
If CurrentProject.AllForms("frmExample").IsLoaded = True Then
'Retrieve the SupplierID from the data entry form
intSupplierCode = Forms![frmExample]![SupplierID]
'Call the parameter query passing the SupplierID????
DoCmd.OpenQuery "qryParams"
Else
'Execute the parameter query as normal
DoCmd.OpenQuery "qryParams"?????
End If
최종 하위는
나는 Me.SupplierID = intSupplierCode을 시도했습니다, 그리고 그것을 컴파일하지만, 폭탄 나는 그것을 실행할 때. 다음은 매개 변수 쿼리에 대한 내 SQL 코드입니다.
매개 변수 [공급 업체] Long; SELECT Suppliers.SupplierID, Suppliers.CompanyName, Suppliers.ContactName, Suppliers.ContactTitle 공급자로부터 WHERE (((Suppliers.SupplierID) = [Supplier] 입력)));
나는이 문제를 해결할 수있는 방법이 있다는 것을 안다.하지만 내가 말했듯이, Access와 VBA를 사용하는 나의 경험 부족으로 상황이 어려워진다. 당신 중 누구라도 도울 수 있다면, 좋을 것입니다!
OnOpen에서 기준 양식에 대한 참조를 절대로 강구하지 않을 것을 권장합니다. 항상 그렇습니다. 기준 양식을 무시할 수있는 몇 가지 방법을 제공하려는 몇 가지 사례에서 저는 A2003 이상에서 OpenArgs를 사용하고 WhereCondition을 제공하고 OnOpen의 보고서의 .Filter 속성을 확인하여 양식 열기를 건너 뜁니다. –
감사합니다. Albert. 귀하의 조언은 좋았지 만 결국에는 솔루션 데이비드에 대한 내 의견에서 언급했듯이 어쨌든,이 티켓을 잠시 동안 작업 한 후에는 티켓을 너무 많이 사용해야하는 시점에 도달해야합니다. 그러면 다시이 앱은 끔찍한 혼란 때문에 그냥 폐기하고 다시 제출하십시오 ... 어쨌든, 조언을 주셔서 다시 한번 감사드립니다. David에 대한 제 응답에서 언급했듯이, 저는 여기에서 새로 왔기 때문에, 아직 당신을 투표 할 수는 없습니다. – JPM
저는 솔직히 "리팩토링에 대한 전체 팬이 아니므로 응답해야한다고 생각하는대로 완료되었습니다." 이는 베스트 프랙티스에 대한 좋은 설명 일지 모르지만 실제로는 전혀 대답하지 않습니다. – Hill