Solved

filtering report based on boolean value

Posted on 2010-11-27
2
349 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
ID: 34222117
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
ID: 34223923
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
View vs Edit mode enhancements 12 40
strange textbox behavior MS Access 9 33
MS Access XML Export Query Setup Multiple Tag Values 15 27
ms/access hyperlink/ftp 7 31
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…
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…

943 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

15 Experts available now in Live!

Get 1:1 Help Now