ADawn
asked on
Combo Box (Style = Dropdown list)
Hey,
VB6(sp4) ADO
I'm trying to save the contents of a combo box (Style = Dropdown list) to a table through ADO, but I receive the message: "Field tbl_Action.DAuthor cannot be a zero-length string" if the user doesn't select an item from the combo box before attempting to save the record.
In other words, if the user clicks SAVE and the combo box doesn't have an item selected, the above message appears.
Here's what I need help with:
I need to allow the user to SKIP this combo box if they want to. In other words, if they don't intend to select an item from the combo list box, how do I avoid the error message above if (IsNull)?
Next, if the user selects an item from the combo box, I need to save that value to the table field.
Finally, how do I clear the choice the user may have selected from the combo box if he/she wants to remove the item before saving the record. You can't simply place the cursor in the box and hit the ESC key.
Thanks,
ADawn
VB6(sp4) ADO
I'm trying to save the contents of a combo box (Style = Dropdown list) to a table through ADO, but I receive the message: "Field tbl_Action.DAuthor cannot be a zero-length string" if the user doesn't select an item from the combo box before attempting to save the record.
In other words, if the user clicks SAVE and the combo box doesn't have an item selected, the above message appears.
Here's what I need help with:
I need to allow the user to SKIP this combo box if they want to. In other words, if they don't intend to select an item from the combo list box, how do I avoid the error message above if (IsNull)?
Next, if the user selects an item from the combo box, I need to save that value to the table field.
Finally, how do I clear the choice the user may have selected from the combo box if he/she wants to remove the item before saving the record. You can't simply place the cursor in the box and hit the ESC key.
Thanks,
ADawn
If you are using access, you should set allow zero length string property for this field to yes (In access).
Otherwise when doing rs.addnew
put condition
if comboName.text <> "" then
rs("fieldname") = value
end if
If you want to clear the contents of the combobox then
have a small command button for clear
with
Private Sub Command1_Click()
Combo1.ListIndex = -1
End Sub
to clear the contents of button
or alternatively you could add the item
combo1.additem " "
to the bottom of list and allow people to select this value
Otherwise when doing rs.addnew
put condition
if comboName.text <> "" then
rs("fieldname") = value
end if
If you want to clear the contents of the combobox then
have a small command button for clear
with
Private Sub Command1_Click()
Combo1.ListIndex = -1
End Sub
to clear the contents of button
or alternatively you could add the item
combo1.additem " "
to the bottom of list and allow people to select this value
ryancys,
It looks like I have copied your code but I didn't (honest) I am just a slower typer.
It looks like I have copied your code but I didn't (honest) I am just a slower typer.
ryancys,
It looks like I have copied your code but I didn't (honest) I am just a slower typer.
It looks like I have copied your code but I didn't (honest) I am just a slower typer.
Hi damienm. It's ok.
I think you should do
if ComboBox.Listindex >=0 then
'save the value
else
'nothing to save
end if
if ComboBox.Listindex >=0 then
'save the value
else
'nothing to save
end if
changing the DB is not such a hot idea.
usually, you dont get to do this as some other gorilla is in charge of the DB, and doesnt like to change it.
I think the more ready answer is whether you have
a bound combo box or did you fill it manually.?
either case requires different solution.
do you have bound combo box?
usually, you dont get to do this as some other gorilla is in charge of the DB, and doesnt like to change it.
I think the more ready answer is whether you have
a bound combo box or did you fill it manually.?
either case requires different solution.
do you have bound combo box?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Are you storing the text value that is selected in the combo box or the ItemData value?
If its the Itemdata value then just store a -1 in the field. Then when retreiving the value from the field, check for a -1 when setting to combo value. (If you load the data back into the form.)
If its the text then add an item to the combobox of "[No Selection]" and set it to the first item in the list. Then set the combo to ListIndex=0 to set this value.
Then just pass it into the database.
Plus, when looking through the data you will be able to easily see that someone skipped it. If it where blank you wouldn't know if it was skipped or just invalid data.
HelixDaKat
If its the Itemdata value then just store a -1 in the field. Then when retreiving the value from the field, check for a -1 when setting to combo value. (If you load the data back into the form.)
If its the text then add an item to the combobox of "[No Selection]" and set it to the first item in the list. Then set the combo to ListIndex=0 to set this value.
Then just pass it into the database.
Plus, when looking through the data you will be able to easily see that someone skipped it. If it where blank you wouldn't know if it was skipped or just invalid data.
HelixDaKat
To SKIP this:
if combo1.listindex = -1 then 'No item selected
'SKIP
else
'Save to field
endif
To clear user selection in combobox:
combo1.listindex= -1
'Hope will help.