[AccessD] Access 2007 - acCmdFind problem

Rocky Smolin rockysmolin at bchacc.com
Sat Feb 19 08:58:48 CST 2011


I think so.  But I tend to write more verbose code out of self defense
because 6 months later it's  much easier to figure out what I was trying to
do.

So my code reads:

"If the user's preference is to have the num lock on and it's off then
toggle the num lock off.  Of the user's preference is to have the num lock
on and it's off, then toggle the num lock on."

A bit redundant, I know, but just easier for me.  Old guy, you know....

Rocky


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Bob Gajewski
Sent: Saturday, February 19, 2011 6:13 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Access 2007 - acCmdFind problem

Hi Rocky

This has nothing to do with solving your problem - sorry - but I just had a
question about part of your code ...

Would this work the same?

Private Sub NumLockChecker()
    If Not (DLookup("NumLockPreference", "LocalOptions") = IsNumLockOn) Then
ToggleNumLock End Sub

Thanks
Bob Gajewski 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin
Sent: Monday, February 14, 2011 11:55 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Access 2007 - acCmdFind problem

For #2 I use the following - except for the first module it's not my code -
I cribbed it from somewhere else.  I store the user's preference for num
lock on or off in a local options table.


Private Sub NumLockChecker()
    If DLookup("NumLockPreference", "LocalOptions") = True And IsNumLockOn =
False Then ToggleNumLock
    If DLookup("NumLockPreference", "LocalOptions") = False And IsNumLockOn
= True Then ToggleNumLock End Sub
 
Function IsNumLockOn() As Boolean

        Dim o As OSVERSIONINFO
        
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)
        IsNumLockOn = keys(VK_NUMLOCK)

End Function

Sub ToggleNumLock()

        Dim o As OSVERSIONINFO
                
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)

          If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=====Win95
                keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
                SetKeyboardState keys(0)
          ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=====WinNT
          'Simulate Key Press
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
          'Simulate Key Release
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
               Or KEYEVENTF_KEYUP, 0
          End If
        
End Sub

Where the Type statement is

      ' Declare Type for API call:
      Private Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128   '  Maintenance string for PSS usage
      End Type

And the constants:

      ' Constant declarations:
      Const VK_NUMLOCK = &H90
      Const VK_SCROLL = &H91
      Const VK_CAPITAL = &H14
      Const KEYEVENTF_EXTENDEDKEY = &H1
      Const KEYEVENTF_KEYUP = &H2
      Const VER_PLATFORM_WIN32_NT = 2
      Const VER_PLATFORM_WIN32_WINDOWS = 1

I think that's everything.

HTH

Rocky Smolin
Beach Access Software
858-259-4334
Skype: rocky.smolin
www.e-z-mrp.com
www.bchacc.com
 
 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jm.hwsn
Sent: Monday, February 14, 2011 8:19 AM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Access 2007 - acCmdFind problem

The project I am working on administers a questionnaire to students in an
attempt to bring down the attrition rate.

The questionnaire is designed and administered by one or more researchers.

The questionnaire is not static. that is the researcher can add, delete or
modify the questions at any given time.

This allows the researcher to place a question anywhere within the
questionnaire.

There are 20 different types of questions, e.g. true/false, scale (1-10 or
1-100), 4 point Lickert type, etc.  

The researcher can change the text of each response in a question as well as
change the text of the question.

We are currently going through usability testing.  The entire "class" is
around 500 students.  The class has a 3 digit identifier that is used in the
questions.  There are about 350 questions in the current questionnaire.

 

The researcher uses a Question  form to modify the questions.  The question
form has a sub form that shows an example of the question as it would look
on the questionnaire.  When a search is done using a list box for combo box
the sub form changes to reflect the text and  type of question.  When the
question type changes the sub form updates the sample. For example a
question might change from a fill-in question to combo box self-lookup
question OR a question might change from a 4 pt multiple choice to a 4 pt
Lickert type question.

 

Here are my questions:

 

Question #1:

As I mentioned above the class has a 3 digit identifier embedded in some
questions.  The researcher puts this identifier within the question to
personalize it for the students.  I have a button on the question form that
is used to search for questions with the 3 digit class identifier.  I use:
DoCmd.RunCommand acCmdFind because, the 3 digit class identifier will need
to change periodically and this allows the researcher to do a "replace all"
after the search.

 

I cannot figure out how to update the sample question sub form after the
"Find Next" button is clicked on the Find dialog box.

Does anyone know how to run a custom function  (update sub form) while the
dialog box is still open?

 

Question #2:

When the search button on the question form is clicked, I use SendKeys to
ensure that "Match" is set to "Any Part of Field" and that the cursor goes
to "Find What" field.  That works, however, occasionally the Num Lock key is
turned off.  I understand that I could use: Application.SetOption "Default
Find/Replace Behavior",1 - but that would set it for all users.  Is there
some way to achieve the same functionality without using SendKeys?

 

Thanks in advance,

Jim



 

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list