[AccessD] current record of form being reset, can't find the cause

Tom Zal tom053 at gmail.com
Wed Jan 18 07:25:24 CST 2012


Thanks to those who responded. I am actually using exactly the process
described by Arthur (sorry if my description of the situation was unclear).
The issue is that after the subform has been set to the right record, and
my code to do so has finished, something else is causing the subform to be
set to the first record.

On Tue, Jan 17, 2012 at 5:37 PM, Charlotte Foust
<charlotte.foust at gmail.com>wrote:

> True, but I working with VB.Net for 5 years, I didn't think of that
> detail.  When I was working with it, I did not find bookmarks to carry
> over, so perhaps that's something that changed between versions somewhere
> along the way?
>
> Charlotte Foust
>
> On Tue, Jan 17, 2012 at 1:59 PM, William Benson <vbacreations at gmail.com
> >wrote:
>
> > Charlotte I am sure (which doesn't make me correct) that recordsetclone
> > shrinks or expands in size as the form is filtered, and reorders itself
> > when the form records are sorted.
> >
> > I have used
> >
> > Frm.bookmark = rst.bookmark
> >
> > On filtered forms and prepositioned them with no problem before.
> >
> > On Jan 17, 2012 2:41 PM, "Charlotte Foust" <charlotte.foust at gmail.com>
> > wrote:
> > >
> > > When you use the filter, you're actually creating a new recordset based
> > on
> > > the original but containing only the filtered records, so you can't
> use a
> > > bookmark with a filter because its scope is on the original recordset,
> > not
> > > the filtered recordset.  I wonder if you could grab the filter string
> > > itself, as well as the record key and then cancel the ApplyFilter and
> use
> > > VBA to set the filter and the record from code?  I haven't tried it,
> but
> > it
> > > seems reasonable.
> > >
> > > Charlotte Foust
> > >
> > > On Tue, Jan 17, 2012 at 7:52 AM, Tom Zal <tom053 at gmail.com> wrote:
> > >
> > > > 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
> >
> >
> > > >
> > > >
> > > >
> > > > >
> > > > --
> > > > 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
> >
> >
> > --
> > 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