?
Solved

Combo Box (Style = Dropdown list)

Posted on 2001-06-08
9
Medium Priority
?
441 Views
Last Modified: 2010-05-02
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
0
Comment
Question by:ADawn
[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
9 Comments
 
LVL 53

Expert Comment

by:Ryan Chong
ID: 6167584
Hi, in your database (if is Access), set the field property to "Allow zero-length string"

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.
0
 
LVL 2

Expert Comment

by:damienm
ID: 6167623
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
0
 
LVL 2

Expert Comment

by:damienm
ID: 6167635
ryancys,

It looks like I have copied your code but I didn't (honest) I am just a slower typer.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 2

Expert Comment

by:damienm
ID: 6167644
ryancys,

It looks like I have copied your code but I didn't (honest) I am just a slower typer.
0
 
LVL 53

Expert Comment

by:Ryan Chong
ID: 6167667
Hi damienm. It's ok.
0
 
LVL 18

Expert Comment

by:deighton
ID: 6167729
I think you should do

if ComboBox.Listindex >=0 then
   'save the value
else
   'nothing to save
end if

0
 
LVL 3

Expert Comment

by:TheAnswerMan
ID: 6169456
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?
0
 
LVL 3

Accepted Solution

by:
Hornet241 earned 90 total points
ID: 6169958

Everyone has covered the Zero length string pretty well, for clearing the combo box though, if you do this

     Combo1.Listindex = -1

this will fire the Combo1_Click Event,

this will work with no Click event

     Combo1.Text = ""

but remember both will fire the Change Event



0
 
LVL 1

Expert Comment

by:HelixDaKat
ID: 6172519
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
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses
Course of the Month14 days, 19 hours left to enroll

770 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