2013-06-17 1 views
0

frmSearch이라는 Access 2007에서 검색 양식/보고서 작성기를 개발하고 있습니다. 기존의 검색 양식은 잘 작동하여 결과를 tabcontrol의 하위 형식으로 표시합니다. 그런 다음 모든 테스트에 대한 보고서를 표시하는 버튼을 클릭하면 정상적으로 작동합니다. 단일 fldTestsID에 대한 보고서를 표시하도록 코드를 수정하고 싶지만 Form/Subform/Control 경로 구문이 붙어 있습니다.form tabcontrol subform 런타임 오류 468 : 개체가이 속성 또는 메서드를 지원하지 않습니다.

두 개의 탭이 있습니다. tabResultsTabular은 쿼리 양식의 행 목록으로 서브 양식 frmResultsTabular을 표시합니다. tabResultsRecord은 하위 레코드 frmResultsRecords을 보여 주며 단일 레코드를 보여줍니다. 보고서는 rpt_TestDatasetExposureEffects입니다. 보고서의 기본 쿼리는 fldTestsID이라는 필드가 포함 된 q_TestDatasetExposureEffect입니다.

따라서 경로 tabResultsRecord-frmSearchfldTestsIDfrmResultsRecordscmdQAReportResults 버튼을 포함한다.

나는 그것이 동일한 오류에 대한 다른 게시물이지만, 작동시키지 못했다고 생각합니다. DoCmd.OpenReport의 Access 2007 문서에는이 특정 인스턴스에 대한 언급이 없습니다.

다음은 시도한 옵션을 포함한 cmdQAReportResults 클릭 이벤트 코드입니다. 라인 strRptWhere =에서 실패합니다. 구문은 Access 2007 docs을 기반으로 작동합니다.

Private Sub cmdQAReportResults_Click() 
    doQAReport 
End Sub 

Private Sub doQAReport() 
'On Error GoTo Err_doQAReport 'comment during debugging 
    Dim stDocName As String ' report name 
' Dim strRptSQL As String ' report SQL String 
    Dim strRptWhere As String ' report WHERE clause 

    stDocName = "rpt_TestDatasetExposureEffects" 
    'Override the recordsource to match the current record TestsID 
' strRptSQL = "SELECT * FROM q_TestDatasetExposureEffects WHERE fldTestsID = " & fldTestsID 
' DoCmd.OpenReport stDocName, acPreview 
    strRptWhere = "0 = 0" 
    strRptWhere = "fldTestsID = " & Me.Form![tabResultsRecord].fldTestsID.Value 'error 468 
' other attempts follow 
' strRptWhere = "fldTestsID = " & Forms("frmSearch").Controls("tabResultsRecord").Form.Controls("frmResultsRecords").Form.Controls("fldTestsID").Value 
' strRptWhere = "fldTestsID = " & Me.Form.fldTestsID 'error 2465 

    DoCmd.OpenReport stDocName, acPreview, , strRptWhere 
' Reports("rpt_TestDatasetExposureEffects").RecordSource = strRptSQL 


Exit_doQAReport: 
    Exit Sub 

Err_doQAReport: 
    MsgBox Err.Description 
    Resume Exit_doQAReport 

End Sub 

답변

1

올바른 구문은 : 귀하의 경우

Forms(<Parent Form>).<control container for subform>.form.<control> 

이 될 수 있습니다

Forms("frmSearch").frmResultsRecords.Form.fldTestsID 

frmResultsRecords 하위 폼의 이름이지만, 그것은 또한 하위 폼의 이름입니다 컨테이너?

그렇지 않은 경우 하위 폼이 포함 된 기본 폼의 컨트롤 이름으로 바꾸십시오.

+0

이 줄에 같은 오류 438이 표시됩니다. 'strRptWhere = "fldTestsID ="& Forms ("frmSearch"). Form.frmResultsRecords.fldTestsID' 속성을 표시하기 위해 하위 폼의 테두리와 F4를 클릭하면 항목 이름이 frmResultsRecords라고 표시됩니다. 오브젝트 뷰어의 양식 이름은 frmResultsRecords입니다. –

+0

컨트롤의 이름은 fldTestID입니까, 아니면 필드의 이름입니까? –

+1

필자는 예제에서 잘못된 부분에'Form'을 넣었습니다. 위의 구문과 일치하지 않으므로이를 수정했습니다. 그것을 바꾸어보십시오. –

관련 문제