Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Day Count - User Input

Posted on 2016-09-24
6
Medium Priority
?
48 Views
Last Modified: 2016-09-25
Experts, I have a query that shows a day count between 2 dates ([ValueDate]) with condition Where T.FacilityType=Q_Disbursement.FacilityType",
How can I modify the below to prompt user to enter a date which the last record date range extends to?  

Example, in the below pic, you can see that for the next to last record in JBIC, the date is February 29, 2016 and the day count is 70 (Feb 29 to May 9) but what I need is a msgbox that pops up and asks the user to enter a date.  If that date, for example, was May 10, 2016 and not May 9 as shown in the pic, the day count would be 71 (Feb 29 to May 10).  User would enter in a date much later than that though.  My example is for simplicity.  

I hope that makes sense.  It likely doesnt so please ask me if need.

attached a db with Q_DisbursementSum.

here is the sql though:
SELECT Q_Disbursement.FacilityType, Q_Disbursement.ValueDate, Q_Disbursement.FacilityAmount, Q_Disbursement.Amount, (Select Sum(T.Amount) From Q_Disbursement As T Where T.FacilityType=Q_Disbursement.FacilityType And T.ValueDate <= Q_Disbursement.ValueDate) AS [Cumulative Drawn], [FacilityAmount]-[Cumulative Drawn] AS Available, DateDiff("d",[ValueDate],(Select Min(Q.ValueDate) From Q_Disbursement As Q Where Q.FacilityType = Q_Disbursement.FacilityType And Q.ValueDate > Q_Disbursement.ValueDate)) AS DayCountx
FROM Q_Disbursement
GROUP BY Q_Disbursement.FacilityType, Q_Disbursement.ValueDate, Q_Disbursement.FacilityAmount, Q_Disbursement.Amount, Q_Disbursement.FacilityAmount
ORDER BY Q_Disbursement.FacilityType, Q_Disbursement.ValueDate;

Open in new window



screeshot of query:
daycountBalanceEE.accdb
0
Comment
Question by:pdvsa
[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
  • 3
  • 2
6 Comments
 
LVL 22
ID: 41814059
create a parameter by using something like: [enter the last record date :] and using it where you want the value substituted. Be sure to write it exactly the same each time (copy and paste to avoid typing mistakes)

Define this parameter to be a date by choosing Parameters from the Design ribbon tab (Query Tools) and choosing the data type query Parameter DataType
0
 
LVL 52

Expert Comment

by:Gustav Brock
ID: 41814094
This query will (maybe) do that - if I understand your question:
SELECT Q_Disbursement.FacilityType, Q_Disbursement.ValueDate, Q_Disbursement.FacilityAmount, Q_Disbursement.Amount, (Select Sum(T.Amount) From Q_Disbursement As T Where T.FacilityType=Q_Disbursement.FacilityType And T.ValueDate <= Q_Disbursement.ValueDate) AS [Cumulative Drawn], [FacilityAmount]-[Cumulative Drawn] AS Available, DateDiff("d",[ValueDate],(Select Min(IIf([Enter Last Date:]>Q.[ValueDate],[Enter Last Date:],Q.[ValueDate])) From Q_Disbursement As Q Where Q.FacilityType = Q_Disbursement.FacilityType And Q.ValueDate > Q_Disbursement.ValueDate)) AS DayCountx
FROM Q_Disbursement
GROUP BY Q_Disbursement.FacilityType, Q_Disbursement.ValueDate, Q_Disbursement.FacilityAmount, Q_Disbursement.Amount, Q_Disbursement.FacilityAmount
ORDER BY Q_Disbursement.FacilityType, Q_Disbursement.ValueDate;

Open in new window

ee2.PNG/gustav
0
 

Author Comment

by:pdvsa
ID: 41814364
Hi Gustav,

thank you for the response. I do see that the record with 70 days did change to 71 however the lines above changed as well but those should actually remain as is. I failed to mention that criteria.  Sorry about that.  The only record that should change is the record with 70 days (but noting the where condition Where T.FacilityType=Q_Disbursement.FacilityType) and not the other records above as those should still be calculated based on the [ValueDAte] and not the pop up msg box prompting user input for a "New Date".  

I hope its a little clearer.  Let me know if you need something else.  
(also, the double entry for PIF for 443 days is actually OK...you had mentioned something about that before in the other question).

here is a visual:
excel
0
Get free NFR key for Veeam Availability Suite 9.5

Veeam is happy to provide a free NFR license (1 year, 2 sockets) to all certified IT Pros. The license allows for the non-production use of Veeam Availability Suite v9.5 in your home lab, without any feature limitations. It works for both VMware and Hyper-V environments

 
LVL 52

Accepted Solution

by:
Gustav Brock earned 2000 total points
ID: 41814454
Oh, it starts to get dirty, but this query seems to do:
SELECT 
    Q_Disbursement.FacilityType, 
    Q_Disbursement.ValueDate, 
    Q_Disbursement.FacilityAmount, 
    Q_Disbursement.Amount, 
        (Select Sum(T.Amount) From Q_Disbursement As T 
        Where T.FacilityType=Q_Disbursement.FacilityType 
            And T.ValueDate <= Q_Disbursement.ValueDate) AS 
    [Cumulative Drawn], 
        [FacilityAmount]-[Cumulative Drawn] AS 
    Available, 
        DateDiff("d",[ValueDate],
            (Select Min(IIf([Enter Last Date:]>Q.[ValueDate] And 
                (Select Count(*) From Q_Disbursement As Q 
                Where Q.FacilityType = Q_Disbursement.FacilityType 
                    And Q.ValueDate > Q_Disbursement.ValueDate) = 1,[Enter Last Date:],Q.[ValueDate])) 
            From Q_Disbursement As Q 
            Where Q.FacilityType = Q_Disbursement.FacilityType 
                And Q.ValueDate > Q_Disbursement.ValueDate)) AS 
    DayCount
FROM 
    Q_Disbursement
GROUP BY 
    Q_Disbursement.FacilityType, 
    Q_Disbursement.ValueDate, 
    Q_Disbursement.FacilityAmount, 
    Q_Disbursement.Amount, 
    Q_Disbursement.FacilityAmount
ORDER BY 
    Q_Disbursement.FacilityType, 
    Q_Disbursement.ValueDate;

Open in new window

Output:

Demo
/gustav
0
 

Author Closing Comment

by:pdvsa
ID: 41814623
Thats simply amazing.  Perfect.  

thank you.  :)
0
 
LVL 52

Expert Comment

by:Gustav Brock
ID: 41814643
You are welcome!

/gustav
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
This article shows how to get a list of available printers for display in a drop-down list, and then to use the selected printer to print an Access report or a Word document filled with Access data, using different syntax as needed for working with …
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.

609 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