In a portal:

Loop
Open Record
If [LastError]
Show Dialog: "A required record is not available."
Commit Records //releases locked portal rows
Exit Script
End If
Go to Portal Row (Next, Exit After Last)
End Loop
Replace
Commit Records

That's the basic idea.  

Alternately, you can loop through the portal and set fields instead of using 
Replace. Test for an error after the Set Field step. Then no pre-emptive Open 
Record step is necessary. Add a Commit Records step at the end. You can test 
for an error after the Set Field (if you have multiple Set Fields, you only 
need to test for an error after the first Set Field). The first Set Field opens 
the record if possible. If it returns an error then:
Revert Record
Then none of the Set Fields will be committed. 

Danny



On Dec 30, 2011, at 11:01 AM, Helping Hand Database Design 
<[email protected]> wrote:

> Hi,
> Not trying to hijack or anything, but on the record locking
> looping commentary, if I might ask. How best to lock a group of
> records in the script before zapping it with a replace?
> Thanks,
> Laura Z.
> 
> 
> 
> 
> 
> ---- On    , Todd Geist ([email protected]) wrote:
> 
> One further refinement :-)
> 
> On Tue, Dec 27, 2011 at 5:30 AM, Corn Walker  wrote:
> 
> One refinement is that entering a field is no longer sufficient
> to lock a
>> record. You should use the Open Record[] command to do so,
> which should
>> return error 301 if the record is in use.
> 
> 
> Don't just check for a 301 error. Check for any error. If any
> error occurs
> you didn't open the record. So check for Get(LastError) = 0. If
> it is 0,
> your safe. If it is not 0, your not.
> 
> For example, Record Level Access would also stop a script from
> opening the
> record and it does not return 301. It returns 200.
> 
> Todd

Reply via email to