?
Solved

How to identify the name of current subform that's in focus on access form

Posted on 2011-09-19
11
Medium Priority
?
428 Views
Last Modified: 2012-06-21
Hi,
I have a form named frmStudentServiceAndQtrDetails.  On it is a subform named frmsubQtrClassDetails.  
I have a button on the parent form named Help.  I work with blind users, and I'd like them to be able to Alt h to open an input box, informing them exactly what form they are in.  (It is a busy form and would be easy to get lost in.)  My input box works fine except I can seem to get the right syntax to find that we are in the subform.  
Any ideas appreciated.  Thanks!
0
Comment
Question by:Not2ruthless
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
  • 2
11 Comments
 
LVL 61

Expert Comment

by:mbizup
ID: 36564448
If you have a button on your subform, you can use the following code to determine the name of the subform that the button is on:

MsgBox Me.ActiveControl.Parent.Name


<I have a button on the parent form named Help.>
The trouble I see with this approach is that if a user is editing subform data and clicks a button on the main form to determine which subform they were editing, they are no longer in the subform - but back in the main form. (so the answer to the question "where am I" when clicking a button on the main form would always be "the main form")
0
 

Author Comment

by:Not2ruthless
ID: 36564463
Thanks.  The Button itself is on the main form.  I'd like to use that same help button to determine what form (the main or sub), that I'm in.  If it's not possible, I could put two help buttons but would like to avoid it
Ruth.  
0
 
LVL 61

Expert Comment

by:mbizup
ID: 36564476
<< to determine what form (the main or sub), that I'm in >>

That's the problem right there... as soon as you click a main form button you are in the main form, regardless of whether you were in the main or sub form before clicking the button.



0
Fill in the form and get your FREE NFR key NOW!

Veeam® is happy to provide a FREE NFR server license to certified engineers, trainers, and bloggers.  It allows for the non‑production use of Veeam Agent for Microsoft Windows. This license is valid for five workstations and two servers.

 

Author Comment

by:Not2ruthless
ID: 36564498
Just for kicks, is there any syntax at all to determine the name of the subform one is in at any given time?  (Pretending I don't have a Help Button that would divert focus).  Now I'm just curious :)
0
 
LVL 48

Accepted Solution

by:
Dale Fye earned 500 total points
ID: 36564523
Are your "blind users" totally blind or just partially?

I generally use conditional formatting on all of my textboxes and combo boxes which changes the background color of the control when the control has the focus.

as mbizup states, if you are clicking a button on the main form, or using Alt_H as a shortcut for that control, then you have a minor, but not insurmountable problem.

You can use the Screen.Previous control property to identify the control that had the focus prior to clicking on your Help button on pressing Alt_H.  Assuming your Alt_H is a shortcut to cmd_Help, it might look like:

Private Sub cmd_Help_Click

    if Screen.PreviousControl.ControlType = acSubform then
        msgbox "You are on subform: " & Screen.PreviousControl.Name
    Else
       ' some other code here
    end if

End sub

If you want to indicate what control had the focus inside that subform, you have to drill down

    if Screen.PreviousControl.ControlType = acSubform Then
        set frm = Screen.PreviousControl.Form
        set ctrl = frm.ActiveControl
        msgbox "You are in the " & ctrl.name & " control on subform: " & frm.name
    end if




If you are using the forms Key_Preview and KeyDown event to check for Alt_H
0
 
LVL 48

Expert Comment

by:Dale Fye
ID: 36564527
If you are using KeyPreview and the KeyDown event to test for Alt_H, then you really don't have a problem.
0
 

Author Comment

by:Not2ruthless
ID: 36564547
Fyed, the previous control did the trick.  I work with totally blind users, but like to make it user friendly for us photo-dependents as well!!

Thanks mBizup and Fyed!!
0
 

Author Comment

by:Not2ruthless
ID: 36564570
I've requested that this question be closed as follows:

Accepted answer: 0 points for Not2ruthless's comment http:/Q_27316697.html#36564547

for the following reason:

Didn't mean to use my comment as the solution, sorry!
0
 

Author Comment

by:Not2ruthless
ID: 36564571
I accidently added a comment before accepting solution by Fyed.  Would like to retract that and Accept Fyed's solution.
So am objecting to my own non-solution :)
0
 
LVL 61

Expert Comment

by:mbizup
ID: 36566021
fyed,

<< Screen.PreviousControl.Name >>

Nice trick!  

I was envisioning some convoluted method of determining the user's "last location" by using global variables.

It makes sense that there is a "PreviousControl" for this type of need...

I learned something new :)


Ruth,

<So am objecting to my own non-solution :) >

Your objection cancelled the pending closure which was marking your answer as accepted... the button you need to accept fyed's solution should be visible to you again.

0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

The Windows Phone Theme Colours is a tight, powerful, and well balanced palette. This tiny Access application makes it a snap to select and pick a value. And it doubles as an intro to implementing WithEvents, one of Access' hidden gems.
If you need a simple but flexible process for maintaining an audit trail of who created, edited, or deleted data from a table, or multiple tables, and you can do all of your work from within a form, this simple Audit Log will work for you.
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

650 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