Solved

Access - Calculate value of a field based on value of another in the same table

Posted on 2016-10-07
6
42 Views
Last Modified: 2016-10-10
Greetings Experts,

I have a table ('user') with the following structure:

ID (pk), Name, Age, EnctrCnt

I am trying to figure out a way (vba, query, view, new table, etc.) to calculate a weighted score based on the value of EnctrCnt.  

For the weights, if the user's encounter count is between 1-3 they get 3 points for each encounter, between 4-10 they get 5 points for each encounter, and for >10 they get 7 points for each encounter.  

I have tried doing this in a report and form using if statements.  The report didn't work and the form only worked if I clicked through each record using the On Load event.  I tried the On Open but nothing happened.

I have basic SQL and VBA knowledge so I am struggling with what is and is not allowed in Access.  

I am using Access 2013

Please let me know if you have any questions.
0
Comment
Question by:taskhill
  • 3
  • 2
6 Comments
 
LVL 49

Expert Comment

by:Ryan Chong
ID: 41834731
it would be more easier and dynamic for calculation if you have an encounter point table to store the points to be allocated for your range of encountered values
0
 

Author Comment

by:taskhill
ID: 41835183
I am fine with creating another table but I need assistance in how to calculate the values using SQL, VBA, or any other method.  Since the values are limitless I was leaning towards a loop but don't know how they are constructed in VBA or SQL. It would be easy for me to do in PHP but unfortunately  that is not an option because this is a system at work.
0
 
LVL 49

Expert Comment

by:Ryan Chong
ID: 41836375
once you have 2 tables you can construct the relevant SQL to generate the output you needed.

I think this can be done.

will you want to go with database option?
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 

Author Comment

by:taskhill
ID: 41836936
Yes a second table is fine with me.  I just need help creating the SQL to generate the results
0
 
LVL 2

Accepted Solution

by:
Antonio Salva Ripoll earned 500 total points
ID: 41837486
Hi.

If the ranges are fixed, you can use the IIF function, is easy and quick.

The SQL code could be:

SELECT ID, Name, Age, EnctrCnt, IIf([EnctrCnt]<=3,3,IIf([EnctrCnt]>3 And [EnctrCnt]<10,5,7)) AS Points
FROM [user];

Open in new window



Other way is to use the Partition function, but the ranges are determined by the function parameters.

You can find more info about the Partition Function here Partition function
0
 
LVL 49

Expert Comment

by:Ryan Chong
ID: 41837794
you can try this if you wish to use 2 tables do do mapping and calculation
28975123.accdb
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

I'm trying, I really am. But I've seen so many wrong approaches involving date(time) boundaries I despair about my inability to explain it. I've seen quite a few recently that define a non-leap year as 364 days, or 366 days and the list goes on. …
Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

867 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

15 Experts available now in Live!

Get 1:1 Help Now