Solved

OnClick event to manipulate Control Source

Posted on 2004-09-22
9
718 Views
Last Modified: 2008-02-01
On my form, I have 4 textboxes with record sources to theses fields in a query:
WithShipping: [TOTAL]+15
DaysOverDue: DateDiff("d",[DATEVER],Now())
LateFee: (IIf([DaysOverDue]>30,[TOTAL]*0.02/30*[DaysOverDue],0))
GrandTotal: [WithShipping]+[LateFee]

Now, my question is: I would like the user to use a OnClick event to change the late fee. Lets say the late fee totals to $73.23, and the Collector is talking to customer over the phone and tells customer he will change late fee to be only, say $25.00. I would like the GrandTotal to then change to reflect this. Now I realize this is probably way too complicated to easily do via a query or VBA, so any ideas or suggestions for a similiar solution would be very much appreciated.
Many kind thanks in advance,
John
0
Comment
Question by:John Account
[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
  • 5
  • 4
9 Comments
 
LVL 41

Expert Comment

by:shanesuebsahakarn
ID: 12129304
What happens though if the collector agrees to change the late fee to $25 but the amount still remains unpaid for a month, for example? Would the collector have to go back and agree another amount or should the normal calculation come into effect?

I might create a new field in the table called something like OverrideFee. If this field is not blank, use the field - otherwise use the calculation.
0
 

Author Comment

by:John Account
ID: 12129337
Nope, the collector wouldn't have to go back and agree to another amount. That would basically be like a calculator on the form that does the work for the collector. Oh, but I forgot to mention, I'd need the report that the Collector would print from that form, to reflect the same changes. Ahhhhhhh, so in the Override field, the new value would be entered, and then, use an onclick event to let form know to change which control sources it reads?
0
 
LVL 41

Accepted Solution

by:
shanesuebsahakarn earned 350 total points
ID: 12129364
No, you wouldn't even need an OnClick event - you could use a nested IIf statement like this:

LateFee: (IIf([DaysOverDue]>30,IIf(Not IsNull([OVERRIDE]),[OVERRIDE],[TOTAL]*0.02/30*[DaysOverDue]),0))
0
Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

 

Author Comment

by:John Account
ID: 12129401
Wow, damn, you come up with the most ingenious ideas!
Okay...I'm gonna be working with this thing; got my fingers crossed. Wish me luck. I think I know exactly where you're coming from!
0
 

Author Comment

by:John Account
ID: 12129649
Must be doing something wrong here...because the LateFee field is displaying nothing unless there's a value in the OverrideFee field.  Here's what I got so far:

Private Sub Form_Current()
If Me!OverrideFee.Value <> "" Then
Me!txtLateFee.ControlSource = "LateFee"
Else
Me!txtLateFee.ControlSource = "OverrideFee"
End If

Private Sub lblChgLateFee_Click()
Me!txtLateFee.ControlSource = "OverrideFee"
Me.txtLateFee.Enabled = True
Me.txtLateFee.Locked = False
Me.lblLateFeeOk.Visible = True
Me.lblChgLateFee.Visible = False
End Sub

Private Sub lblLateFeeOk_Click()
Me.lblChgLateFee.Visible = True
Me.lblLateFeeOk.Visible = False
Me!txtLateFee.ControlSource = "LateFee"
Me.txtLateFee.Enabled = False
Me.txtLateFee.Locked = True
End Sub
0
 
LVL 41

Expert Comment

by:shanesuebsahakarn
ID: 12129656
Try:
If IsNull(Me!OverrideFee) Then
Me!txtLateFee.ControlSource = "LateFee"
Else
Me!txtLateFee.ControlSource = "OverrideFee"
End If

You've actually got the logic the wrong way round - you want to display the LateFee if the OverrideFee is null (or blank), rather than the other way round :)
0
 

Author Comment

by:John Account
ID: 12129784
I'm a bit dislexic, lol--thanks for transposing my logic there! Now...I'm about stumped here:
LateFee: (IIf([DaysOverDue]>30,IIf(Not IsNull([OVERRIDE]),[OVERRIDE],[TOTAL]*0.02/30*[DaysOverDue]),0))
That LateFee is already in the query, so I'm wondering if should create another field in that query naming it something like LateOverrideFee or create an entirely different query. Not too sure what you mean about nested IIf statement. You mean creating another query and calling it from my LateFee query?  Or, if I just add it to existing query, reference it instead of LateFee if [OverrideFee] is not null? Hmmmmnnn...very interesting! Points increased to 350.
0
 
LVL 41

Expert Comment

by:shanesuebsahakarn
ID: 12129826
If you've already got the nested IIf in the expression, the LateFee field will always show the correct amount - that is to say, if the item is not overdue, it shows 0. If it is, and there is an Override fee, it shows the override fee otherwise it shows the normal calculation. You don't need any code at all - just bind the textbox to the LateFee field and let the expression handle the calculation for you.
0
 

Author Comment

by:John Account
ID: 12129861
I'm sitting here in complete awe. That is amazing. Wow. I am so damn elated, it aint even funny.
Thanks, Shane.  Sigh...okay, back to work.
0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

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

In earlier versions of Windows (XP and before), you could drag a database to the taskbar, where it would appear as a taskbar icon to open that database.  This article shows how to recreate this functionality in Windows 7 through 10.
This article describes a method of delivering Word templates for use in merging Access data to Word documents, that requires no computer knowledge on the part of the recipient -- the templates are saved in table fields, and are extracted and install…
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…

707 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