[AccessD] Access 2007 - acCmdFind problem

Stuart McLachlan stuart at lexacorp.com.pg
Sat Feb 19 17:06:52 CST 2011


If I had to pick up your code from scratch and maintain it in the future:

I actually find
"If the user's Numlock preference doesn't match the current Numlock state, then toggle it" 
easier to follow :-).

-- 
Stuart

On 19 Feb 2011 at 6:58, Rocky Smolin wrote:

> 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
> 
> -- 
> 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