?
Solved

filtering report based on boolean value

Posted on 2010-11-27
2
Medium Priority
?
354 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 24

Accepted Solution

by:
Bitsqueezer earned 2000 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

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

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

Access custom database properties are useful for storing miscellaneous bits of information in a format that persists through database closing and reopening.  This article shows how to create and use them.
Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
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…
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.
Suggested Courses

764 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