[AccessD] events question

jwcolby jwcolby at colbyconsulting.com
Fri Dec 7 10:54:03 CST 2007


Arthur,

In general I try to dissuade people from doing that for the simple reason
that the name of the function is not easily findable.  Joe Six-pack searches
for SortByColumn in his code window, and (not understanding what it does)
not finding it referenced anywhere decides that can be safely deleted.  Only
when the user actually clicks on a control that references that function
will the problem be discovered.  No compile error because the control
property references a non-existent function.  BAD!  

Sometimes the best ideas have side effects that make it not such a good
idea.

At least if a control scanner is setting the property programmatically, the
name of the function will be found and this error avoided.

I do like your sort by column thingy though.  Done at the framework level
that one will be a keeper.

John W. Colby
Colby Consulting
www.ColbyConsulting.com 
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Arthur Fuller
Sent: Friday, December 07, 2007 11:35 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] events question

I think the previous explanation is appropriate. I use that approach often.
For example, in a continuous form I define double-click as Sort, and another
double-click as Sort Descending. I have a function just as outlined
previously (in my case called SortByColumn()), and in the double-click
property I just type this:

<code>
=SortByColumn([Form])
</code>

In case anyone's interested, the code for said function is:

<code>
Public Function SortByColumn(f As Form)
    Dim ctlCurrentControl As Control
    Dim strControlName As String
    Set ctlCurrentControl = Screen.ActiveControl
    strControlName = ctlCurrentControl.Name
    Debug.Print strControlName
    Debug.Print f.OrderBy

'08-Sep-01
'line changed to support subform invocation 'ActiveForm refers to the master
form, not the subform
'    If Screen.ActiveForm.OrderBy = vbNullString Then
    If f.OrderBy = vbNullString Then
        DoCmd.RunCommand acCmdSortAscending
'    ElseIf Right(Screen.ActiveForm.OrderBy, 4) = "Desc" Then
    ElseIf Right(f.OrderBy, 4) = "Desc" Then
        DoCmd.RunCommand acCmdSortAscending
    Else
        DoCmd.RunCommand acCmdSortDescending
    End If
    Set ctlCurrentControl = Nothing
    'DoCmd.RunCommand acCmdSortAscending         'or Descending
End Function
</code>

hth,
Arthur




More information about the AccessD mailing list