[AccessD] Update the current recordset

Jurgen Welz jwelz at hotmail.com
Tue Jul 10 09:59:48 CDT 2007


If you use a long for the 'Marked' field, you can assign 32 users a bit 
position within the long.  I've done this to flag users in our office for 
appointments and meetings.  Alternatively you could use a text field with 
delimited User IDs and query with 'Like *" & UserID & "*', though querying 
on the bit is more efficient.

Hence this needn't necessarily be a bound limitation.

In terms of marking a field based on a filtered recordset, I'd be inclined 
to run a dbExecute rather than iterating a recordset:

"Update tblDivision Set Marked = True Where " & Forms("frmDivision").Filter

or you could write the Where clause based on the buttons and combos.

Ciao
Jürgen Welz
Edmonton, Alberta
jwelz at hotmail.com





>From: "jwcolby" <jwcolby at colbyconsulting.com>
>
>First of all, using a field called "Marked" may cause multi-user issues.  
>It
>definitely will in a bound form, because the records are live linked back 
>to
>the table.  If another user clears the marked flag for a record the current
>user is looking at...
>
>
>John W. Colby
>Colby Consulting
>
>I have  continuous form that is a subform. On the parent form's header are
>some buttons and combo boxes that are used to filter the continuous 
>subform.
>This all works fine. There's an option group that contains "Mark All", 
>"Find
>Marked" and "Unmark All" options. When I first wrote it, "Mark All" applied
>to all the records in the table but I want it to be smarter than that. To
>wit, when you filter, say, by age, and select 20 as the age, then only a
>small subset of the total rows are shown. I want "Mark all" to apply to the
>subset not the whole table.
>
>The Marking is done using a column in the table called Marked. The first
>version invokes a stored procedure to mark and unmark all the records and 
>it
>is amazingly quick.
>
>I thought that if I used the recordsetclone it would present only the
>filtered subset, but apparently that doesn't work. Here's the code I wrote:
>
><code>
>Sub MarkAllRecords()
>     Dim rst As ADODB.Recordset
>     With Me
>         Set rst = .Riders_Browser_fsub.Form.RecordsetClone
>
>         Do While Not rst.EOF
>             rst.Fields("Marked") = -1
>             rst.Update
>             Debug.Print rst("RiderID"), rst("Marked")
>             rst.MoveNext
>         Loop
>         Debug.Print rst.RecordCount & " rows changed."
>         rst.Close
>         Set rst = Nothing
>     End With
>End Sub
></code>
>
>This marks all the records in the table, not the filtered subset. How do I
>get a handle on just the subset? I suppose that I could use a SQL statement
>that specifies the current filter, which I shall try now, but I'm wondering
>why the code above doesn't work -- or rather, how to make it work.
>
>TIA,
>Arthur

_________________________________________________________________
New Windows Live Hotmail is here. Upgrade for free and get a better look. 
www.newhotmail.ca?icid=WLHMENCA150




More information about the AccessD mailing list