Solved

Passing Value from unbound text box to a table from a Data Entry Form

Posted on 2010-11-09
5
970 Views
Last Modified: 2012-08-13
I have what I think should be a simple question, but I'm probably making it harder than it needs to be.

I'm hoping to set up a form that allows an end-user to input financial allocations on a person-by-person basis for financial commitments we have.  A person must be entered into the DB before they can be allocated $.  The cbo_PersonNum referred to below is driven from the list of persons who were entered into the DB.

I have a value cbo_PersonNum on a data entry form that displays four values:  
1) Person Number
2) Last Name
3) Preferred Name
4) Department

When a value is selected, I want to pass the other values to three separate text boxes below cbo_PersonNum.  So, after a value has been selected I want

1) txt_LastName = cbo_PersonNum.Column(1)
2) txt_PreferredName = cbo_PersonNum.Column(2)
3) txt_Department = cbo_PersonNum.Column(3)

I have the part where the Text boxes display the value (the text box control source(s) is the the right side of the equations above).  However, when I save the record, since the Text Boxes are essentially unbound (Control Source is not a field on the underlying table), the values do not pass to the table, so this is where I need help.  I need to pass these values to the table and be sure that the values cannot be changed from what the cbo_PersonNumber passes.

I'm open to considering other object types than a text box, I just need to pass the values into the table, even though may be better database normalization not to do so.

Thanks for any help.
0
Comment
Question by:UTSWPeds
  • 3
  • 2
5 Comments
 
LVL 47

Accepted Solution

by:
Dale Fye (Access MVP) earned 350 total points
Comment Utility
I would not store that information in this second table.  Store the [Person Number] that appears to be bound to cbo_PersonNum.  With that, and your Person table, you can always generate the values you want in a query.

However, when working with a bound form, you will need to use the forms current event to populate those same textboxes with the values of the various columns that are in the combo boxes RowSource, but which dont get displayed.

So, in addition to having those three lines of code in the cbo_PersonNum_AfterUpdate event, you need to put those same three lines in the Form_Current event
0
 

Author Closing Comment

by:UTSWPeds
Comment Utility
There is a reason I want to pass the values directly into the table form the form, as was mentioned in the initial question.  Advice on generally accepted programming techniques is appreciated, but in some instances there is a reason why there is an exception, and it should not be assumed that it is an invalid request.
0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
Comment Utility
Never stated it was an invalid request.  I just strongly recommend against it.  Since there is no way to guarantee that someone won't change the text values associated with (LastName, PreferredName, and Department) in this second table, you could end up with data integrity issues.

If you really need to store those values in the same table as PersonNum, then bind the three textboxes to the associated fields in the data table.  Then, in the AfterUpdate event of cbo_PersonNum, run the three lines of code you mentioned above.  They will update those text fields.  The only other thing I would do is Lock those three textboxes so the user cannot manually change those values except by selecting a new Person from cbo_PersonNum.
0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
Comment Utility
If, for some reason, you cannot bind those three fields, you could create an UPDATE query that will fill those three fields in in the FORM_AfterUpdate event.

Private Sub Form_AFTERUPDATE

    strSQL = "UPDATE tbl2 SET [LastName] = """ & me.txtLastName & """, " _
                & "[PreferredName] = """ & me.txtPreferredName & """, " _
                & "[Department] = """ & me.txtDepartment & """ " _
                & "WHERE [ID] = " & me.txtID
    Currentdb.Execute strSQL, dbfailonerror

End Sub
0
 

Author Comment

by:UTSWPeds
Comment Utility
I did just that (changed the after update property of cbo_PersonNum to fill the text boxes) then bound the text boxes to the underlying table.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…

743 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now