[AccessD] Is there a better way? (AfterUpdate event)

Ryan Wehler wrwehler at gmail.com
Wed Feb 21 17:33:45 CST 2018


What you’re seeing are temp tables based closely on real tables. 

I am not sure I follow on what you are suggesting. We are picking the samples which are related to a specific test (thus picking that test already) and then selecting the analyte list for one sample (at a time, since my code isn’t reliable for this yet)





> On Feb 21, 2018, at 5:22 PM, Stuart McLachlan <stuart at lexacorp.com.pg> wrote:
> 
> Let's confirm the terminology, it will help :)
> 
> How does the user input data.  Directly into a table, or through a form.  If a form, what is the 
> data source of that form.
> 
> Are "these two tables" as shon in your linked image, actual tables. If so are they temporary 
> tables created for this prupose or are they the actual primary data tables.
> 
> This:
>> Each sample has to have the same equal amount of analytes selected
>> because the transform/pivot query goes sideways if data is missing.
> 
> suggests that you shoulld definitely be just picking Sample and Testcode/Analyte and using 
> those two parameters to select the appropriate data for reporting.
> 
> I hope that Run, Sample and TestCodes are three separate related tables in your database :)
> 
> 
> 
>> On 21 Feb 2018 at 17:03, Ryan W wrote:
>> 
>> Well that's "more or less" what's happening here.. The user inputs
>> some data.. and presses "get data" and it fills in these two tables.
>> They then select 4 samples containing the same TestCode.  The tables
>> are linked by a Sequence (auto number). So each sample has a sequence,
>> and many analytes have that same sequence number (PK/FK relationship).
>> Then they match the report list for the 4 samples, which I'm
>> attempting to 'synchronize' rather unsuccessfully depending on use.
>> 
>> As I said, right now the logic to select or deselect the same analyte
>> across the 3 remaining selected samples is spotty if you fix one
>> Sample list and then attempt to "mass update" the check box list by
>> pasting the column back over itself (thus triggering AfterUpdate X
>> times, where X is between 1 and probably 90 or more, depending on test
>> complexity). The longer the list the worse it gets at matching the
>> list up.
>> 
>> Each sample has to have the same equal amount of analytes selected
>> because the transform/pivot query goes sideways if data is missing.
>> 
>> On Wed, Feb 21, 2018 at 4:44 PM, Stuart McLachlan
>> <stuart at lexacorp.com.pg> wrote:
>> 
>>> Not sure I follow you, but it seems to me that you are trying to
>>> select multiple samples and analytes.  Without nowing the underlying
>>> data structures, it's hard to say what the best approach is, but
>>> this seems feasible:
>>> 
>>> Instead of the "sample + analyte" and "report" list, why not just
>>> have
>>> three lists, The first  two
>>> (samples and analytes) would be selectable.  The "report" list would
>>> be display only and show the currently selected sample/testcode
>>> pairs. . When you select/ deselect an item in either the sample or
>>> analyte list, requery the "report" list.
>>> 
>>> 
>>>> On 21 Feb 2018 at 15:36, Ryan W wrote:
>>>> 
>>>> https://i.imgur.com/hhUUmWw.png (screenshot)
>>>> 
>>>> I've got this form where a user selects 4 samples from it on the
>>>> left side
>>>> 
>>>> On the right side are the compounds associated with those samples,
>>>> in this example it's a very short list (1 compound).
>>>> 
>>>> In the "Rpt" checkbox on the right side I have code that when the
>>>> box is toggled, it updates the other 3 selected samples to match
>>>> the toggle list.
>>>> 
>>>> Simple right?
>>>> 
>>>> 
>>>> Well imagine these 4 samples have a list of 60 analytes.  If you
>>>> toggle them one by one, it works beautifully. But not all the
>>>> samples may have the toggle list in the same state:
>>>> 
>>>> Eg: Sample 1 as "Silver" on, but Sample 2 has silver "Off".  If
>>>> you don't touch sample 1 for silver you still have to go fix it
>>>> for Sample 2 because you wanted silver on and it's not on across
>>>> the board.
>>>> 
>>>> So what I was toying with is selecting the entire RPT column on
>>>> the right, and re-pasting your "corrected list" back into itself.
>>>> 
>>>> Unfortunately this doesn't work right.   The other 3 samples don't
>>>> always get the matching target list.  It sporadically leaves some
>>>> toggled or untoggled.
>>>> 
>>>> I imagine this is the local access db engine (local tables) not
>>>> being able to lock/unlock the table fast enough since the
>>>> AfterUpdate code is executed upwards of 60 times (if you copy and
>>>> paste the entire column back in).
>>>> 
>>>> 
>>>> Right now this is using DoCmd.RunSQL but I've also tried using a
>>>> DAO recordset which is even worse. It tells me various items are
>>>> not updatable where at least RunSQL gets me 75% of the way there.
>>>> 
>>>> 
>>>> Is there another approach for this that might work better?  The
>>>> only other thing I have come up with is to have a Command Button
>>>> that runs out and updates the "final list" rather than have the
>>>> user paste the column back over itself.  It might work better like
>>>> that since it would be a single execute with a self join to match
>>>> the target lists up.  But I really don't want to go to a command
>>>> button if I don't have to.
>>>> 
>>>> So.. I'm looking for ideas on what else I might be able to try? --
>>>> AccessD mailing list AccessD at databaseadvisors.com
>>>> http://databaseadvisors.com/mailman/listinfo/accessd Website:
>>>> http://www.databaseadvisors.com
>>>> 
>>> 
>>> 
>>> --
>>> AccessD mailing list
>>> AccessD at databaseadvisors.com
>>> http://databaseadvisors.com/mailman/listinfo/accessd
>>> Website: http://www.databaseadvisors.com
>>> 
>> -- 
>> AccessD mailing list
>> AccessD at databaseadvisors.com
>> http://databaseadvisors.com/mailman/listinfo/accessd
>> Website: http://www.databaseadvisors.com
>> 
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com



More information about the AccessD mailing list