Solved

filtering report based on boolean value

Posted on 2010-11-27
2
351 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

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Question has a verified solution.

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

Suggested Solutions

Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
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…
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …

861 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