내가하지 Access에서 전에 발생한 그 이전에 나는의 전면 액세스 2007을 사용하여 사용하고 2007 년액세스 2007 ReportEvents 클래스는 이벤트
에 액세스하는 보고서 이벤트에 문제가 있어요 발사되지 SQL 백엔드로 끝납니다.
보고서에 사용하는 클래스 인 ReportEvents가 있습니다. 보고서의 Report_Open 이벤트에서이 클래스를 인스턴스화 한 다음 에 activate, Close, NoData와 같은 이벤트를 처리하고 보고서 대신 데이터를 내보내는 일반적인 코드 을 입력합니다.
이 코드는 이전 Access 2003 응용 프로그램 (mdb)에서 올바르게 작동했지만 이지만 2007 년에 예상대로 작동하지 않았습니다 (accdb). 내 테스트에서 비 이벤트 public sub, ProvideXLOption에 대한 호출은 매력처럼 작동하지만 아무 이벤트도 발생하지 않습니다. ReportEvents 클래스에서. 방금 가져온 코드를 프로젝트로 변경하지 않았습니다. 나는 브레이크 포인트를 설정했지만 공격 당하지는 않습니다. 나는 그들 모두를 공개 이벤트 로 변경하고 테스트 보고서 이벤트에서 그들을 호출하고 잘 동작했습니다.
동일한 결과를 사용하여 Access 2007에서 다른 보고서를 설정했습니다. 내가 액세스 시작 설정을 확인했습니다 그리고 그들은 괜찮아요. 심지어 행운을 제거하지 않고 신뢰할 수있는 위치에서 데이터베이스 위치를 제거하고 다시 추가했습니다.
Microsoft는 이벤트 코드를 수정 했습니까? 아니면 보지 못하는 부분에이 간단한 코드 오류가 있습니까? 뭔가 간단한 것이되어야합니다. 내 두뇌는 그냥 토스트 (내 아들은 어제 밤 먹이를 먹은 후 깨어 있기로 결정했다).
클래스 ReportEvents 코드 : 테스트 보고서 코드에서
Option Compare Database
Option Explicit
Private WithEvents rpt As Access.Report
Const strEventKey As String = "[Event Procedure]"
Public Property Set Report(Rept As Access.Report)
Set rpt = Rept
With rpt
.OnActivate = strEventKey
.OnClose = strEventKey
If LenB(.OnNoData) = 0 Then
.OnNoData = strEventKey
End If
End With
End Property
Public Sub Terminate()
On Error Resume Next
Set rpt = Nothing
End Sub
Private Sub rpt_Activate()
LoadPrintRibbon
End Sub
Private Sub rpt_Close()
Me.Terminate
End Sub
Private Sub rpt_NoData(Cancel As Integer)
Dim strMsg As String
strMsg = "No Records were found that match your criteria."
MsgBox strMsg, vbInformation, rpt.Name & _
": No Match. Report Cancelled"
Cancel = True
End Sub
Private Sub LoadPrintRibbon()
#If AccessVersion >= 12 Then
If rpt.RibbonName <> "PrintPreview" Then
rpt.RibbonName = "PrintPreview"
End If
#End If
End Sub
';;Provides user with option to send data to Excel instead of a report
Public Sub ProvideXLOption(Cancel As Integer)
'... some XLOption Code
End Sub
:
Private Sub Report_Open(Cancel As Integer)
Dim rptEvts As ReportEvents
Set rptEvts = New ReportEvents
Set rptEvts.Report = Me
';;Let User User Choose to Export Data to Excel or Display the report
rptEvts.ProvideXLOption Cancel
End Sub