billcute
asked on
Displaying asterisk "*" text in required form fields
How do I display to the user which fields are the "required" fields when they click the update or save button. Then, the form displays the required fields, with the asterik "*" symbol next to the label or the input field to show the user that the field is required. I know there is a "Required Field Text:" option, but that is for the error message that is display next to the input field.
In other words,
(1). Use an asterisk "*" to highlight information that has been filled out incorrectly or which is compulsory.
(2). Ensure that the "*" is grouped with the text label.
(3). The "*" can be colored, in red for example, to draw attention to it as,and
(4). Making sure tat the asterik " * " only appear at the missing form fields and then disappear after
all missing fields are completed.
Suggestions as to the design and code implementation will be appreciated.
In other words,
(1). Use an asterisk "*" to highlight information that has been filled out incorrectly or which is compulsory.
(2). Ensure that the "*" is grouped with the text label.
(3). The "*" can be colored, in red for example, to draw attention to it as,and
(4). Making sure tat the asterik " * " only appear at the missing form fields and then disappear after
all missing fields are completed.
Suggestions as to the design and code implementation will be appreciated.
ASKER
antontolentino:
I currently have a working code that checks for "required field" and then will list all required fields in a message box. If you could modify my current code to work your suggested code above, it will be great.
I'll post the code if you want.
I currently have a working code that checks for "required field" and then will list all required fields in a message box. If you could modify my current code to work your suggested code above, it will be great.
I'll post the code if you want.
An alternative thing you can do is put something like this in the Format property of a text box:
@;"<required>" or ;;;[Red]"<required>"
If you have a date/time field and you already have a Format, you can do this:
ddd mm-dd-yyyy;;;[Blue]"<requi red>"
So, whenever the control is blank, you will see the word <required> or whatever word you like.
mx
@;"<required>" or ;;;[Red]"<required>"
If you have a date/time field and you already have a Format, you can do this:
ddd mm-dd-yyyy;;;[Blue]"<requi
So, whenever the control is blank, you will see the word <required> or whatever word you like.
mx
ASKER
MX,
I am hoping for asterik that would only display when user clicks the "save" button and some fields are incorrectly filled or required field are missing. As I have said in my previous post to "antontolentino", I do have a working function that I would wish to convert from "msgbox" type flag to asterik type design.
If you are wishing to help on this, it will be great.
I am hoping for asterik that would only display when user clicks the "save" button and some fields are incorrectly filled or required field are missing. As I have said in my previous post to "antontolentino", I do have a working function that I would wish to convert from "msgbox" type flag to asterik type design.
If you are wishing to help on this, it will be great.
Bill, I would love to help you, but there is a fair amount of complexity to get the working 'just right' ... cover all cases such that asterisks are displayed (or not) when they should be. Unfortunately, I am really short on time today. Sorry ...
mx
mx
ASKER
mx,
Not to worry, I can understand.
Regards
Bill
Not to worry, I can understand.
Regards
Bill
ASKER
I tried your suggested code dated 10/07/07. I recieved a compile error:
"variable not defined"
..on
Label1
.....from:
Private Sub txtName_AfterUpdate()
If IsNull(txtName.Value) Then
Label1.Caption = "Name:*"
Label1.ForeColor = "#ED1C24" ' <<<--- I also corrected this line as shown
End If
End Sub
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
rockiroads,
Thank you for taken time to response to my post out of your busy schedule.
Yes, I noticed that you have not appeared on EE for awhile now but I have been posting new questions for once awhile to polish my current working code - nothing big really.
I homestly appreciate your response on this post. I read through the code - seems a little confused about the implementation - i.e the steps of implementing both "numbers" and "text" code you posted above..
Your first post was well understood - the other two followup posts seesmsomewhat confusing - may require furher explanation for me to grasp it. However, based what I have seen it's definitely waht I am looking for.
(1). I curently have: textboxes and checkboxes (radio and box type checkboxes).
(2). Some of the texboxes are numeric while others are text type boxes.
(3). I have criteria expression for some of the "required" tag fields as well such as (Case 3"ne") below.
I have decided to post my current working "Tag" functions, If you could modify these functions to work with the ones you already posted above - it will be great.
' *****************
Public Function ChkCtl(ByRef mCtl As Control) As Boolean
ChkCtl = True
If mCtl.Properties("TabIndex" ) <= Screen.ActiveControl.Prope rties("Tab Index") Then ' <<--additional
Select Case ExtractTag(mCtl.Tag, 2) '<<-- Another function for extracting "tag"
***Tags are set in controls like: [ne] [1ne] or [2ne]
Case "ne"
If Len(Nz(mCtl.Value)) = 0 Then ChkCtl = False
Case "1ne"
If Len(Screen.ActiveForm.txtP ermitNo) > 0 And Len(Nz(mCtl.Value)) = 0 Then ChkCtl = False
Case "2ne"
If Len(Screen.ActiveForm.cboS ConnType) > 0 And Len(Nz(mCtl.Value)) = 0 Then ChkCtl = False
Case "3ne" '<<--- Case '3ne' is based on criteria expression
If Len(Screen.ActiveForm.txtP ermitNo) > 0 And _
Screen.ActiveForm.cboSConn Type = "NC" And _
(Screen.ActiveForm.cboSewe rType = "SA" Or _
Screen.ActiveForm.cboSewer Type = "CM") And _
Len(Nz(mCtl.Value)) = 0 Then ChkCtl = False
Case ">0"
If Not Nz(mCtl.Value) > 0 Then ChkCtl = False
Case "tf"
If Nz(mCtl.Value, 99) <> 0 And Nz(mCtl.Value, 99) <> -1 Then ChkCtl = False
End Select
End If '<<--Additional
Exit Function
End Function
' *************
Function MandatoryFields() As Boolean
Dim myCtl As Control
Dim myCtlList As String
MandatoryFields = True
' First the basic controls
For Each myCtl In Me.Controls
If Len(myCtl.Tag) > 1 Then
If ChkCtl(myCtl) = False Then
myCtlList = myCtlList & Me.Controls("l_" & myCtl.Name).Caption & ", "
On Error Resume Next
myCtl.Properties("BackColo r") = 8454143
On Error GoTo 0
Else
On Error Resume Next
myCtl.Properties("BackColo r") = 16777215
On Error GoTo 0
End If
End If
Next
If Len(myCtlList) > 0 Then MsgBox "Please fill the following field(s) before continuing:" & vbCrLf & myCtlList
Exit Function
End Function
' ***********
Note:
You may post your amended code at your convenience. You can even combine my two functions into one - whatever you feel is more efficient will be appreciated.
Regards
Bill
Thank you for taken time to response to my post out of your busy schedule.
Yes, I noticed that you have not appeared on EE for awhile now but I have been posting new questions for once awhile to polish my current working code - nothing big really.
I homestly appreciate your response on this post. I read through the code - seems a little confused about the implementation - i.e the steps of implementing both "numbers" and "text" code you posted above..
Your first post was well understood - the other two followup posts seesmsomewhat confusing - may require furher explanation for me to grasp it. However, based what I have seen it's definitely waht I am looking for.
(1). I curently have: textboxes and checkboxes (radio and box type checkboxes).
(2). Some of the texboxes are numeric while others are text type boxes.
(3). I have criteria expression for some of the "required" tag fields as well such as (Case 3"ne") below.
I have decided to post my current working "Tag" functions, If you could modify these functions to work with the ones you already posted above - it will be great.
' *****************
Public Function ChkCtl(ByRef mCtl As Control) As Boolean
ChkCtl = True
If mCtl.Properties("TabIndex"
Select Case ExtractTag(mCtl.Tag, 2) '<<-- Another function for extracting "tag"
***Tags are set in controls like: [ne] [1ne] or [2ne]
Case "ne"
If Len(Nz(mCtl.Value)) = 0 Then ChkCtl = False
Case "1ne"
If Len(Screen.ActiveForm.txtP
Case "2ne"
If Len(Screen.ActiveForm.cboS
Case "3ne" '<<--- Case '3ne' is based on criteria expression
If Len(Screen.ActiveForm.txtP
Screen.ActiveForm.cboSConn
(Screen.ActiveForm.cboSewe
Screen.ActiveForm.cboSewer
Len(Nz(mCtl.Value)) = 0 Then ChkCtl = False
Case ">0"
If Not Nz(mCtl.Value) > 0 Then ChkCtl = False
Case "tf"
If Nz(mCtl.Value, 99) <> 0 And Nz(mCtl.Value, 99) <> -1 Then ChkCtl = False
End Select
End If '<<--Additional
Exit Function
End Function
' *************
Function MandatoryFields() As Boolean
Dim myCtl As Control
Dim myCtlList As String
MandatoryFields = True
' First the basic controls
For Each myCtl In Me.Controls
If Len(myCtl.Tag) > 1 Then
If ChkCtl(myCtl) = False Then
myCtlList = myCtlList & Me.Controls("l_" & myCtl.Name).Caption & ", "
On Error Resume Next
myCtl.Properties("BackColo
On Error GoTo 0
Else
On Error Resume Next
myCtl.Properties("BackColo
On Error GoTo 0
End If
End If
Next
If Len(myCtlList) > 0 Then MsgBox "Please fill the following field(s) before continuing:" & vbCrLf & myCtlList
Exit Function
End Function
' ***********
Note:
You may post your amended code at your convenience. You can even combine my two functions into one - whatever you feel is more efficient will be appreciated.
Regards
Bill
ASKER
rockiroads:
Please disregard my last post. I have been able to figure out your code. I put the code together per your last three posts. It works great. I really appreciate your taken time to assist with the code despite your busy schedule.
Regards
Bill
Please disregard my last post. I have been able to figure out your code. I put the code together per your last three posts. It works great. I really appreciate your taken time to assist with the code despite your busy schedule.
Regards
Bill
ASKER
rockiroads:
I'll split your code among all your three posts.
Regards
Bill
I'll split your code among all your three posts.
Regards
Bill
ASKER
rockiroads:
Sorry.... I meant to say that I'll split your points on your three assisted code.
Regards
Bill
Sorry.... I meant to say that I'll split your points on your three assisted code.
Regards
Bill
There is a simple way to modify the label associated with a text box in Access 2007 (unsure if this is true in earlier versions)
dim oLabel as Label
Set oLabel = oTextBox.Controls(0)
oLabel.caption = "New caption" <- add or remove * as required.
dim oLabel as Label
Set oLabel = oTextBox.Controls(0)
oLabel.caption = "New caption" <- add or remove * as required.
ASKER
dlotts:
Happy New Year.
I didnt quite understand your suggestion but I can open a new post on the subject and upload a sample db to explore your method.
Regards
Bill
Happy New Year.
I didnt quite understand your suggestion but I can open a new post on the subject and upload a sample db to explore your method.
Regards
Bill
In your code, you get the associated label by using a naming convension. That will work fine but requires some maintenance to keep everything named correctly.
By changing
myCtlList = myCtlList & Me.Controls("l_" & myCtl.Name).Caption & ", "
to something like
dim oLabel as Label
Set oLabel = myCtl.Controls(0)
myCtlList = oLabel.Caption & ", "
you no longer need to enforce the naming convention. (This assumes you always have an associated label)
By changing
myCtlList = myCtlList & Me.Controls("l_" & myCtl.Name).Caption & ", "
to something like
dim oLabel as Label
Set oLabel = myCtl.Controls(0)
myCtlList = oLabel.Caption & ", "
you no longer need to enforce the naming convention. (This assumes you always have an associated label)
let say for example a Name field having label "NAME:" is required, you can put this code
Label1.Caption = "NAME:*"
to make it red
Label1.Forecolor = #ED1C24
you can put these code in your after_update event of the required field.
provided that the name of your text field is txtName, you code will look something like this
if isnull(txtName.value) then
Label1.Caption = "NAME:*"
Label1.Forecolor = #ED1C24
end if