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
Solved

VBA Select Query Help Needed

Posted on 2013-12-12
5
427 Views
Last Modified: 2013-12-13
Hello,

I have two tables in MSAccess

-Jobs [ JobID, JobDesc]    
-JobsCompleted[JobID, JobTime, JobResult (Boolean)]

My goal is to create an MS Access Continuous Form with the following structure:

[Job Desc1]   [JobResultToday]  [JobResultYesterday]  [JobResultTwoDaysAgo]
[Job Desc2]   [JobResultToday]  [JobResultYesterday]  [JobResultTwoDaysAgo]

Where each result is a checkbox.  Is there anyway to craft a query that produce this type of result?  

I tried using the Form_Current() and changing the color of the checkboxes (couldn't change the 'check', and found it changed the color of all rows, not just the one I'm looking at.  

Any other thoughts?
Thanks
0
Comment
Question by:compsol1993
5 Comments
 
LVL 61

Accepted Solution

by:
mbizup earned 500 total points
ID: 39715661
Try using this as the recordsource for your continuous form:

SELECT a.JobID, a.JobDesc, a.JobResult AS JobResultToday, 
(SELECT b.JobResult FROM JobsCompleted b WHERE Format(b.JobTime, 'yyyymmdd') = Format(Date() -1 , 'yyyymmdd') AND a.JobID = b.JobID) AS JobResultYesterday,
(SELECT c.JobResult FROM JobsCompleted c WHERE Format(c.JobTime, 'yyyymmdd') = Format(Date() -2 , 'yyyymmdd') AND a.JobID = c.JobID) AS JobResultTwoDaysAgo
FROM JobsCompleted a 
WHERE Format(a.JobTime, 'yyyymmdd') = Format(Date()  , 'yyyymmdd')

Open in new window

0
 
LVL 35

Expert Comment

by:PatHartman
ID: 39717032
You can use a crosstab query to "pivot" this data.

Each instance of a row in a continuous form is a clone of the form and inherits the "master" attributes so if you color controlA in an event of the current row, all instances of controlA take on the assigned color.  For limited situations you can use Conditional Formatting which will apply to only a single row.  With the form in design view, select the field you want to control and then click ConditionalFormatting in the ribbon.
0
 

Author Comment

by:compsol1993
ID: 39717327
mbizup, thanks, that works great.  You've got the points, but just one question.  

Any advice for what I should do if a job is missed.  It seems I need to bring the actual "Job" table into this, so that feeds the jobs, and then pull data from JobsCompleted Table

I modified your last WHERE statement to be:

WHERE IN (SELECT JobID From Job), but it produces all jobscompleted -- it doesn't just list each job 'once'.

Thanks again!
0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 39717345
Are you only looking for the last 3 days, or is that just an example?

Assuming that your JobTime field is actually a date, I believe you can do this with something like:

TRANSFORM Sum(tbl_JobsCompleted.JobResult) AS SumOfJobResult
SELECT tbl_Jobs.JobDesc
FROM tbl_Jobs INNER JOIN tbl_JobsCompleted ON tbl_Jobs.JobID = tbl_JobsCompleted.JobID
WHERE (((DateDiff("d",[JobTime],Date()))<3))
GROUP BY tbl_Jobs.JobDesc
PIVOT DateDiff("d",[JobTime],Date());

This computes the difference between todays date and the JobTime field and limits it to today and the previous two days.  You would then use this in a report, change the labels from 0, 1, and 2 to "Today", "Yesterday", "DayBefore"  And then change the control types from text (which would display the numbers (0, -1) checkboxes.  This would result in a query that looks like:

JobDesc     0       1       2
Job1           -1      0
Job2           -1      0       0
Job3           -1       0
0
 

Author Closing Comment

by:compsol1993
ID: 39717590
Thanks for the help everyone, the 1st posts code meets my needs nicely.
0

Featured Post

Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

Question has a verified solution.

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

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…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
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…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

789 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