[AccessD] Automating parameterized action queries.....DATE?!

Sad Der accessd666 at yahoo.com
Fri Mar 11 03:36:05 CST 2005


Hi group,

after almost 3 hours I give up. I'm using Ken's
solution and it works great. I'm using for all my
params....off course then I crashed into a F#$@ng date
field.

Can anybody tell me why code does not return a date?
What am I missing?

Module: mParams
Option Compare Database
Option Explicit
   Public oRptParam As cReportParams
   
Public Function ParamVersion() As Variant
   'Dim oRptParam As cReportParams
   Dim blnDestroyRepParam As Boolean
   
   If oRptParam Is Nothing Then
      Set oRptParam = New cReportParams
      blnDestroyRepParam = True
   Else
      blnDestroyRepParam = False
   End If
   
   ParamVersion = oRptParam.Version
   If blnDestroyRepParam Then
      Set oRptParam = Nothing
   End If
End Function

Public Function ParamNewBusinessDate() As Date
   'Dim oRptParam As cReportParams
   Dim blnDestroyRepParam As Boolean
   
   If oRptParam Is Nothing Then
      Set oRptParam = New cReportParams
      blnDestroyRepParam = True
   Else
      blnDestroyRepParam = False
   End If
'????????????????????????????????????????????????????
'===> Somehow ParamNewBusinessDate stays 00:00:00????
'????????????????????????????????????????????????????
   ParamNewBusinessDate = oRptParam.NewBusinessDate
   If blnDestroyRepParam Then
      Set oRptParam = Nothing
   End If
End Function

CLASS cReportParams
Option Compare Database
Option Explicit

Private mVersion As String
Private mdtmNewBusinessDate As Variant
'This parameter checks if the query is run via a form!
Private mFormDriven As Boolean


Property Get Version() As String
   Dim strVersion As String
   
   If mFormDriven Then
      Version = mVersion
   Else
      If mVersion = "" Then
         strVersion = InputBox("Enter the version:")
         If strVersion > "" Then
            mVersion = strVersion
         End If
         Version = mVersion
      Else
         Version = mVersion
      End If
   End If
End Property

Property Let Version(VersionIn As String)
   mVersion = VersionIn
End Property
Property Get NewBusinessDate() As Variant
   Dim dtmNewBusinessDate As Date
   
   If mFormDriven Then
      NewBusinessDate = mdtmNewBusinessDate
   Else
      If mdtmNewBusinessDate = "00:00:00" Then
'I fill the InputBox with the value 22/02/2005
         dtmNewBusinessDate = InputBox("Enter the new
business date:")
         If Not dtmNewBusinessDate = "00:00:00" Then
            mdtmNewBusinessDate = dtmNewBusinessDate
         End If
      Else
         NewBusinessDate = mdtmNewBusinessDate
      End If
   End If
End Property

Property Let NewBusinessDate(NewBusinessDateIn As
Variant)
   mdtmNewBusinessDate = NewBusinessDateIn
End Property

Property Let FormDriven(FormDrivenIN As Boolean)
   mFormDriven = FormDrivenIN
End Property

Property Get FormDriven() As Boolean
   FormDriven = mFormDriven
End Property

Private Sub Class_Initialize()
   mVersion = ""
   mdtmNewBusinessDate = "00:00:00"
   mFormDriven = False
End Sub

Private Sub Class_Terminate()
   mVersion = ""
   mdtmNewBusinessDate = "00:00:00"
   mFormDriven = False
End Sub

-----------------------------------------------------
If somebody needs more details....please ask!

Thnx.

Regards,

Sander
--- Ken Ismert <KIsmert at TexasSystems.com> wrote:
> Sander,
> 
> There is a class-based approach:
> 
> Define a class, CReportParms, with two variant
> properties, Version and
> StartDate:
> 
>    Private mVersion As Variant
>    Private mStartDate As Variant
> 
>    Property Get Version() As Variant
>       Version = mVersion
>    End Property
>    Property Let Version(VersionIn As Variant)
>       mVersion = VersionIn
>    End Property
> 
>    ' (Similar Get/Let for StartDate)
> 
>    Private Sub Class_Initialize()
>       mVersion = Null
>       mStartDate = Null
>    End Sub
> 
> Declare it as global in one of your modules:
> 
>    Public gRptParms As New CReportParms
> 
> Provide two global functions to use in your queries
> in place of your
> parameters:
> 
>    Public Function ParmVersion() As Variant
>       Parms = gRptParms.Version
>    End Function
>    Public Function ParmStartDate() As Variant
>       Parms = gRptParms.StartDate
>    End Function
> 
> You can set these properties in your form before you
> run your report:
> 
>    gRptParms.Version = txtVersion
>    gRptParms.StartDate = txtStartDate
> 
> If you can calculate reasonable values for Version
> and StartDate, you can do
> so in the CReportParms Initialize event.
> Alternately, you can prompt the
> user in the class when the queries are run
> standalone:
> 
>    Property Get Version() As Variant
>       Dim sVersion As String
>       If IsNull(mVersion) Then
>           sVersion = InputBox("Enter Version:")
>           If sVersion > "" Then
>              mVersion = CLng(sVersion)
>           End If
>       End If
>       Version = mVersion
>    End Property
> 
> You could also have a third property, FormDriven,
> that, when set to True,
> doesn't prompt the user. Only your frmReport form
> will set this property,
> and clear it upon exit. That way, the user is always
> prompted when running
> the queries stand-alone.
> 
> -Ken
> 
> > Hi group,
> >
> > my story of the queries continues. I need to
> > run a set of action queries. This works fine.
> >
> > Several queries have parameters. So that means
> > the user has to watch the screen for a
> > parameter to pop-up. Is it possible to add
> > some parameter fields in the form to fill
> > the required parameters...WITHOUT changing
> > the query it self?
> >
> > So I have a parameters in my query:
> > [Enter version:]
> > [Enter startdate:]
> >
> > And I do not want to change these to:
> > forms!frmReport!txtVersion
> > forms!frmReport!txtStartDate
> 
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



More information about the AccessD mailing list