Solved

filtering report based on boolean value

Posted on 2010-11-27
2
348 Views
Last Modified: 2012-05-10
Dear Experts,

I am trying to filter a report based on a field boolean value. I have a combo box on my form called cboTardy. The drop down's row source includes ("Excused";"Unexcused";"Excused & Unexecused") and is unbound. I would like to filter my report based on the combo box selection. If "Excused" is selected the report will only display records with the 'true' value (-1) in the tblStdTardyExcused field. If the user selects "Unexcused" then filter those records with a 'false' value (0) and if both "Excused & Unexcused" is select the report should ignore any tblStdTardyExcused filter (or allow either value) and tack on only the date filter.

I tried doing this (see code) but am getting an error message.

Ideas?

Thanks!
Private Sub cmdRunTardyReport_Click()

 On Error GoTo Err_cmdPrintReport_Click

    Dim iViewMode As Integer

    Dim stDocName As String

    Dim strFilter As String

 

    stDocName = "rptStudentTardy"



   

    If Not IsNull(Me![cboTardy]) Then

        If Me![cboTardy] = "Excused" Then

            strWhere = "[tblStdTardyExcused] = '" & True & "'"

        ElseIf Me![cboTardy] = "Unexcused" Then

            strWhere = "[tblStdTardyExcused] = '" & False & "'"

        Else

            strWhere = ""

    End If

        

        

        

        

    Else

        MsgBox "Please select a value from the dropdown " & vbNewLine & "box before printing this report.", vbCritical, "Value Not Selected"

      Exit Sub

    End If

    

     If IsDate(Me.txtStartDate) And IsDate(Me.txtEndDate) Then

           strWhere = strWhere & " And [tblStdTardyDate] Between #" & Me.txtStartDate & "# and #" & Me.txtEndDate & "#"

    Else

           strWhere = strWhere & "[tblStdTardyDate] = #" & Date & "#"

    End If



    

    Select Case MsgBox("Preview report before printing?", vbQuestion Or vbYesNoCancel, "Select Print Method")

        Case vbYes

          iViewMode = acViewPreview

        Case vbNo

          iViewMode = acViewNormal

        Case vbCancel

          GoTo Exit_cmdPrintReport_Click

    End Select



 

 'Close the report if already open: otherwise it won't filter properly.

    If CurrentProject.AllReports(stDocName).IsLoaded Then

        DoCmd.Close acReport, stDocName

    End If

   

   DoCmd.OpenReport stDocName, iViewMode, , strWhere

  

Exit_cmdPrintReport_Click:

    Exit Sub



Err_cmdPrintReport_Click:

    MsgBox Err.Description

    Resume Exit_cmdPrintReport_Click

 

End Sub

Open in new window

screenshot1.png
0
Comment
Question by:shogun5
2 Comments
 
LVL 24

Accepted Solution

by:
Bitsqueezer earned 500 total points
Comment Utility
Hi,

the question is: Which error in which line?

If you want to use boolean values you can do it like this:

strWhere = "[tblStdTardyExcused] = True"

Open in new window


(directly without single quotes and converting the "True" into numeric values)

Cheers,

Christian
0
 

Author Comment

by:shogun5
Comment Utility
Bitsqueezer,

Thanks!

I made the following modification and all went well!

Cheers!
Private Sub cmdRunTardyReport_Click()

 On Error GoTo Err_cmdPrintReport_Click

    Dim iViewMode As Integer

    Dim stDocName As String

    Dim strFilter As String

 

    stDocName = "rptStudentTardy"



   

    If Not IsNull(Me![cboTardy]) Then

        If Me![cboTardy] = "Excused" Then

            strWhere = "[tblStdTardyExcused] = True"

        ElseIf Me![cboTardy] = "Unexcused" Then

            strWhere = "[tblStdTardyExcused] = False"

        Else

            strWhere = "[tblStdTardyExcused] = False" & " or " & "[tblStdTardyExcused] = True"

    End If

        



    Else

        MsgBox "Please select a value from the dropdown " & vbNewLine & "box before printing this report.", vbCritical, "Value Not Selected"

      Exit Sub

    End If

    

     If IsDate(Me.txtStartDate) And IsDate(Me.txtEndDate) Then

           strWhere = strWhere & " And [tblStdTardyDate] Between #" & Me.txtStartDate & "# and #" & Me.txtEndDate & "#"

    Else

           strWhere = strWhere & "[tblStdTardyDate] = #" & Date & "#"

    End If



    

    Select Case MsgBox("Preview report before printing?", vbQuestion Or vbYesNoCancel, "Select Print Method")

        Case vbYes

          iViewMode = acViewPreview

        Case vbNo

          iViewMode = acViewNormal

        Case vbCancel

          GoTo Exit_cmdPrintReport_Click

    End Select



 

 'Close the report if already open: otherwise it won't filter properly.

    If CurrentProject.AllReports(stDocName).IsLoaded Then

        DoCmd.Close acReport, stDocName

    End If

   

   DoCmd.OpenReport stDocName, iViewMode, , strWhere

  

Exit_cmdPrintReport_Click:

    Exit Sub



Err_cmdPrintReport_Click:

    MsgBox Err.Description

    Resume Exit_cmdPrintReport_Click

 

End Sub

Open in new window

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
I see at least one EE question a week that pertains to using temporary tables in MS Access.  But surprisingly, I was unable to find a single article devoted solely to this topic. I don’t intend to describe all of the uses of temporary tables in t…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now