Solved

Generate Custom Number and assign to another field on the form

Posted on 2014-01-06
10
517 Views
Last Modified: 2014-01-12
I am generating a custom record number based on three fields:
Type
SO#
WOID

The custom number is created using the following equation:
= [SO#] & Left([Type],1) & [WOID]

I first used this equation as the source for the WorkOrderNumber field and the custom number was not saved in the field in the table.

So I then created an unbound field to capture the custom number and then I set the WorkOrderNumber field equal to the unbound field.
Neither saves the the custom number and I would like to save this number since it should not change once assigned.

Thoughts?
0
Comment
Question by:btgtech
  • 3
  • 3
  • 2
  • +1
10 Comments
 
LVL 12

Expert Comment

by:pdebaets
ID: 39761251
Use a query based on the table instead of the table for your form recordsource. Create a field in the query that concatenates the 3 fields. Now you can use a bound text box to display the custom number.
0
 
LVL 84
ID: 39761881
Peter has pointed you in the right direction, but to expand:

You should not save values like that in a table. Instead, since you always have the "root" values available (i.e. the Type, SO#, and WOID fields) just "build up" that value when you need it. The only reason for that value is for human readability, and you can run into troubles down the road if you stored "calculated" values like this. For example, what if the Type changes? You'd have to be sure that you also update that calculated value, and if the user somehow gets to the table and changes it directly, your data becomes flawed.

So save the "root" values, and use a query as Peter suggests.
0
 

Author Comment

by:btgtech
ID: 39761994
But, if someone mistakenly changes the SO# or the type, then the number will change and I would rather not have to lock down the fields.
0
 
LVL 84
ID: 39762162
then the number will change
The number would not change unless you put code in place to insure it changes. That's the entire concept behind NOT storing calculated values, and instead storing the root values - changes made to the "root" values would be reflected in your forms and reports and queries without you having to do anything further. If you stored the full calculated value, you'd have to insure you make the required data changes in all those locations to insure you write back the calculated value correctly.
I would rather not have to lock down the fields.
I'm not sure what you mean by this, but you don't have to lock down anything (and you can't do that in Access anyway).
0
Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

 
LVL 34

Accepted Solution

by:
PatHartman earned 500 total points
ID: 39762980
You could save the calculated field in the Form's BeforeUpdate event.  I also do not like creating "meaningful" fields like this because as has been pointed out, changing one of the underlying components either results in a new value if you did it right and didn't store the value but calculated it instead and if you do it wrong and store the value, it doesn't change but now it will no longer relate to the rest of the record.  You need to come to grips with the issue and decide which is best for you.

If Me.CalcID & "" = "" Then
    [SO#] & Left([Type],1) & [WOID]
End If

Open in new window

0
 

Author Comment

by:btgtech
ID: 39763391
The Work Order number is a number that we need to set once.  It does not change for the duration of the work order and for the most part the only time that the other parts may change is due to an entry error.

I will just use the calculated field.
0
 
LVL 84
ID: 39767543
for the most part the only time that the other parts may change is due to an entry error.
I've been doing this a long time, as has Pat, and my experience has always been that forcing non-standard behavior (like this) is never a good idea.

But it's your data, and you're the one who'll have to deal with the mess ...

Also, you really should not have accepted my comment as your "solution". Pat's answer will provide you with the method to store your calculated value, so I've asked the Moderators to change the award.
0
 
LVL 34

Expert Comment

by:PatHartman
ID: 39768002
Thanks Scott.
0
 

Author Comment

by:btgtech
ID: 39775602
OK,
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
Familiarize people with the process of utilizing SQL Server stored procedures 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 Micr…
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…

919 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