[AccessD] Array is locked

Max Wanadoo max.wanadoo at gmail.com
Tue Mar 18 02:33:37 CDT 2008


Well here is another bug/feature.

A3K
Default Record Locking set to "Edited Record"

Problem:
Main form has 3 sub forms.
Click button opens a new form.
This new form has a click  button which runs a function.
Function opens a new recordset which requires records which are also held in
one of the subform on the main form.
All records in rst are parsed and updated (90k+ ) except for 97 records.
Always the same 97

Turns Out:
Turns out that one of the sub forms oncurrent event was making a record
"dirty" (ie, changing a value as the record was accessed) and thus it was
locked.
Access (of course) locked this record but also the records around it (the
other 96).
It was not apparent that this was the problem as there was no way to "SEE"
that the record was "dirty" as the forms were not displaying the indicators.
Also difficult to pin down as Access of course "updated" and thus made
"Clean" the record as the focus was moved.
Lots of head scratching.

Answer:
In the last line of the oncurrent event for each of the subforms and the
main form put in me.dirty=false.  Also put this in just before the click
button opened the function.
That done the trick.

So much for the Default Record Locking set to "Edited Record".  96 other
records were locked as well.

Max


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Jim Lawrence
Sent: Monday, March 17, 2008 10:19 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Array is locked

Is that a bug or feature? Jim

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin at
Beach Access Software
Sent: Monday, March 17, 2008 3:07 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Array is locked

FYI:

I figured it out - brute force, binary search - ReDimming various places in
the module until I found where it failed.  Turned out that if you use
With/End with on the array, it's locked - and apparently stays locked for
the duration of the module.  Don't know if there's a way to unlock it.  End
With doesn't do it.

Rocky
 




 	
	

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin at
Beach Access Software
Sent: Monday, March 17, 2008 9:49 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Array is locked

Arthur:

I tried this:

        For lngI = 1 To UBound(mudTH)
            If mudTH(lngI).fOrdering = True Then
                If lngI <> UBound(mudTH) Then   ' if not the last record in
the TH array
                    For lngL = lngI To UBound(mudTH) - 1
                        mudTH(lngL) = mudTH(lngL + 1)
                    Next lngL
                End If
                lngDeletes = lngDeletes + 1
                ReDim Preserve mudTH(UBound(mudTH) - 1)
            End If
        Next lngI
        
        'If lngDeletes <> 0 Then ReDim Preserve mudTH(UBound(mudTH) -
lngDeletes)

Where before the first ReDim was commented out.  I uncommented it and got
the lock message first time .fOrdering was True.  The rest of the code moves
all the downstream elements of the array up one element to delete the
current element.

It's a legacy app and really one huge bowl of spaghetti.  I'm thinking about
going around the problems by substituting a variable lngUboundmudTH for
everywhere the code uses UBound(mudTH) abd just reduce that variable in this
case by lngDeletes. 

But finding all occurrences of UBound(mudTH) could be a problem since it
might be in Control Sources, Record Sources, stored queries, almost
anyplace.  Like I say - legacy code.
 

Rocky





 	
	

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Arthur Fuller
Sent: Monday, March 17, 2008 9:31 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Array is locked

Just a wag, Rocky, but what if you ReDimmed the array element by element? It
might be that something somewhere in the middle is causing the problem. You
could easily find out whether the whole array is locked by just shrinking it
one element. If that works then try the loop and decrement the size until
she goes boom. Just a wag, as I said.

Arthur

On 3/17/08, Rocky Smolin at Beach Access Software <rockysmolin at bchacc.com>
wrote:
>
> Lambert:
>
> Here's the Type:
>
> Private Type THRecord
>     TaskID As Long                  'T
>     StartDate As Date               'S
>     DueDate As Date                 'D
>     QuasiDueDate As Date            'Q
>     TargetDate As Date              'R
>     RequiredHours As Double         'H
>     EarliestCompleteDate As Date    'C
>     ASAP As Double                  'A
>     fOrdering As Boolean            'F
>     ErrorHours As Double            'E
>     TempReg As Double               'Z
>     DueDateFlag As Boolean          'FD
>     PastDueFlag As Boolean          'FP
>     ASAPFlag As Boolean             'FA
>     TargetDateFlag As Boolean       'FT
> End Type
> Dim mudTH() As THRecord             'TH
>
> There are lots of references to elements in the aray but at the point 
> where the redim occurs, there are no references.  Does any reference 
> lock the array and then the lock persists?  Is there a way to 
> determine what element in an array is causing the lock or a way to 
> release the array?
>
>
> TIA
>
> Rocky
>
>
>
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

No virus found in this incoming message.
Checked by AVG. 
Version: 7.5.519 / Virus Database: 269.21.7/1331 - Release Date: 3/16/2008
10:34 AM
 

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

No virus found in this incoming message.
Checked by AVG. 
Version: 7.5.519 / Virus Database: 269.21.7/1331 - Release Date: 3/16/2008
10:34 AM
 

--
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