The only improvement I would suggest to Danny's response is, in the "if error branch", put the "Commit Records //releases locked portal rows" before the "Show Dialog". Doing so will reduce any locked record conflicts with other users.
Jason On 12/30/11 at 11:28 AM -0500, Danny Mack wrote: > 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
