Tom Zal
tom053 at gmail.com
Tue Jan 17 09:52:12 CST 2012
Thanks Rocky The code is not setting the filter, the user is, that's why I'm using the ApplyFilter event. I do have a function with similar functionality for requeries that saves the key, does the requery, and restores the current record. I broke it into 2 functions (get and set) for the filter case. I would have liked to do it the same way as for requeries, but as far as I can tell, I have to save the key in the ApplyFilter event, and I can't restore the record in that event, because the filter hasn't been applied yet. If I'm wrong about this please let me know. On Tue, Jan 17, 2012 at 9:51 AM, <rockysmolin at bchacc.com> wrote: > Tom: > > I use the same findfirst/bookmark method to set the focus on the record > that had it before a filter was applied, or more often, after a requery. > > > I would just move that code to a function, and call it from whereever in > the code you set the filter instead of using the ApplyFilter event. > Also, with a function, it will be easy to move the call around in your > code to see where it best works. You could set the function up to both > save the current record value and return to it by passing it the PK (or > whatever you're using) and a flag to tell the function whether to save > or restore. > > HTH > > Rocky > > > > -------- Original Message -------- > Subject: [AccessD] current record of form being reset, can't find the > cause > From: Tom Zal <tom053 at gmail.com> > Date: Tue, January 17, 2012 6:58 am > To: Access Developers discussion and problem solving > <accessd at databaseadvisors.com> > > Hi - I have a puzzle I can't solve. I'm working on a project that > involves > a form (for layout only, no recordsource) with a datasheet subform. When > the user applies or removes a filter or sort on the subform, I want the > current record to remain the same. Access default behavior seems to be > to > lose the current record. I have a function to save the value of a field > of > the current record in the ApplyFilter event, and a function to then look > up > that record using recordsetclone and findfirst in the next Current event > and make it the current record with .bookmark. (If you have a better > method > to suggest that would be great.) > > (When the bookmark restores the record, it fires the Current event > again, > but a local variable there has now been set so no recursive loop > happens) > > This actually works fine for applying and removing sorts and removing > filters. However when applying a filter, although the current record is > restored, as I can see by single stepping through the code, after the > process finishes, something changes the record to the first record. The > Current event is fired by this change and when I look at the call stack > there, there is nothing but the OnCurrent function of the form. I think > this means that my code did not change the record? > > I created a new little database with a table, query, and datasheet form, > and the same function for the same events, and everything works fine > there, > the current record is restored in all cases. > > Does anybody have any thoughts about what may be happening? I know > there's > probably not enough info here to identify the problem, but any ideas > would > be appreciated. > -- > 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 >