[AccessD] Running action queries

Gustav Brock gustav at cactus.dk
Sat Oct 11 03:37:16 CDT 2014


Hi David

This is such a situation that with only ~50 steps, it is far easier to loop the recordset and run the queries where a match is found.

For each step, decide if the query shall run:

    If RunQuery(Elegibility, chkElegibility, Gathered, chkGathered) = True Then
        ' Run the query.
    End If

using a function like this:

<code>
Public Function RunQuery( _
    ByVal Elegibility As Boolean, ByVal Gathered As Boolean, _
    ByVal ElegibilitySelected As Boolean, ByVal GatheredSelected As Boolean) _
    As Boolean

    RunQuery = _
        (Elegibility Imp (ElegibilitySelected And GatheredSelected)) And _
        (Gathered Imp GatheredSelected)
    
End Function
</code>

This is, by the way, one of the rare examples for using the ignored, forgotten, and soon lost operator Imp.

/gustav
________________________________________
Fra: accessd-bounces at databaseadvisors.com <accessd-bounces at databaseadvisors.com> på vegne af David McAfee <davidmcafee at gmail.com>
Sendt: 11. oktober 2014 00:57
Til: Access Developers discussion and problem solving
Emne: [AccessD] (no subject)

So, I'm trying to figure out if my logic is correct.

I have a form with a couple of check boxes (chkEligibility & chkGathere).

I have 40+ possible steps/actionqueries that need to run.

Here is a very over simplified example:

Step  Elegibility Gathered
   1
   2
   3                        X
   4         X            X
   5         X            X
   6         X            X
   7                       X

(I'm not sure if the X's lined up correctly after the email gets sent
away...)
Steps 4,5& 6 are under eligibility, 3-7 are gathered.

So the way this works is:
Steps 1 & 2 will Always run
If chkGathered is checked, 3 & 7 will also run, but 4-6 will only run if
chkGathered and chkEligibility are both checked

If chkEligibility is checked, but Gathered isn't, only steps 1 & 2 will run.

I originally was using a procedure to change the queryDef based on two
different check box combinations, and I decided to just make one query
dynamic instead.

The following query DOES work correctly, but it just seems messy / ugly.

Is there a way to simplify it? Am I overlooking something obvious?


SELECT PKID, Step, Task, Action, Started, Completed, EligibilitySection,
GatheredSection
FROM tblMiniCostReportBuildSteps
WHERE
(Completed=0 AND EligibilitySection=False AND
(GatheredSection=IIf([forms]![frmBuildMiniCostReport]![chkGatherMode]=False,False,[forms]![frmBuildMiniCostReport]![chkGatherMode]
In (True,False))))

OR

 (Completed=0 AND EligibilitySection=False AND GatheredSection=False)

OR

(Completed=0 AND
(EligibilitySection=IIf([forms]![frmBuildMiniCostReport]![chkEligibilityMode]=False,False,[forms]![frmBuildMiniCostReport]![chkEligibilityMode]
In (True,False)))
AND
(GatheredSection=IIf([forms]![frmBuildMiniCostReport]![chkGatherMode]=False,False,[forms]![frmBuildMiniCostReport]![chkGatherMode]
In (True,False))));





Thanks in advance...

David


More information about the AccessD mailing list