Solved

Disable Combo Box once user has selected item from list

Posted on 2011-02-15
10
1,182 Views
Last Modified: 2012-05-11
I have a combo box on a form with four items in the list. Once the item has been selected, I would like to disable the combo box. As users can inadvertently change the item by selecting the combo box and using the drop down menu listing the items.
Is there anyway to prevent this from happening? Perhaps test the field and see if it is blank then allow the user to select from the drop down menu and if it is not blank the combo box loses focus not allowing the user to change the entry previously entered.
0
Comment
Question by:Baber62
10 Comments
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 34895152
Disabling the control as soon as anything has been selected wouldn't give the user the chance of correcting an erroneous selection.

The control could be disabled (or hidden or simply ignored) once the data is used.
0
 
LVL 77

Expert Comment

by:peter57r
ID: 34895154
What if they make a mistake and select the wrong option?
0
 

Author Comment

by:Baber62
ID: 34895212
If an erroneous selection is made this could be corrected by going to the table view and correcting it from there. I am more concerned with users changing it from the form view.

The database is one for Road Safety Audits of which there are only four types of audits namely Stage 1, Stage 1/2, Stage 3, and Stage 4. These are the items in the combo box.
0
Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

 
LVL 7

Expert Comment

by:klakkas
ID: 34895303
For the comboBox control, if the user has not selected anything, the .SelectedIndex property is -1. If the .SelectedIndex is different than -1 then a selection has been made.

So, in your code get the comboBox_SelectedIndex event and in there:

If ComboBox1.SelectedIndex <> -1 then
     ComboBox1.enabled=false
End If
0
 

Author Comment

by:Baber62
ID: 34895476
klakkas,

Where do I enter this code? On the before update or the after update event?

 Please note that I am using MS Access 2003.
0
 
LVL 6

Expert Comment

by:JVWC
ID: 34895881
Here is an "Opt Out" code ...

Private Sub Combo1_AfterUpdate()
    If MsgBox("Are you sure of this selection?" & vbCr & Me.Combo1.Text, vbCritical + vbOKCancel, "Selection will be locked!") = vbCancel Then
    Me.Combo1 = "" 'assuming text
Else
    Me.cboNextCtrl.SetFocus 'move focus to another control so we can lock the original combobox1
   'then
    Me.Combo1.Locked = True
End If
End Sub

'In case you need to move to another record and start over
Private Sub Form_Current()
Me.Combo1.Locked = False
End Sub


Cheers
JC
0
 

Author Comment

by:Baber62
ID: 34895975
JVWC,

My combo box is combo10, however, just in the line after the else statement on "Me.cboNextCtrl.SetFocus" it give me a debug error and states that "Method or data member not found".
0
 
LVL 6

Accepted Solution

by:
JVWC earned 500 total points
ID: 34904414
<"Me.cboNextCtrl.SetFocus" it give me a debug error and states that "Method or data member not found".>

Yes, you cannot lock the control that has the focus, so you need to move the focus to another control on the form. I called it "cboNextCtrl" as logic would suggest you move the focus to the "NEXT CONTROL" that the user would use.
Assuming that you will have other Combo controls for the user to select, I guess the logic follows that you would move the focus to the NEXT combo...

Change Me.cboNextCtrl.setfocus to the name of a control on your form thus:
me.yourcontrolname.setfocus.



Cheers
JC
Private Sub Combo10_AfterUpdate()
    If MsgBox("Are you sure of this selection?" & vbCr & Me.Combo10.Text, vbCritical + vbOKCancel, "Selection will be locked!") = vbCancel Then
    Me.Combo10 = "" 'assuming text
Else
    Me.changethistoyourcontrolname.SetFocus 'move focus to another control so we can lock the original combobox1
   'then
    Me.Combo10.Locked = True
End If
End Sub

'In case you need to move to another record and start over
Private Sub Form_Current()
Me.Combo10.Locked = False
End Sub

Open in new window

0
 

Author Closing Comment

by:Baber62
ID: 34905414
Routine works perfectly!!!
0
 
LVL 6

Expert Comment

by:JVWC
ID: 34905877
Cheers
0

Featured Post

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

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

Suggested Solutions

In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
Preparing an email is something we should all take special care with – especially when the email is for somebody you may not know very well. The pressures of everyday working life stacked with a hectic office environment can make this a real challen…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

825 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