Article ID: 145719
Article Last Modified on 11/18/2003
APPLIES TO
- Microsoft Visual C++ 4.0 Standard Edition
- Microsoft Visual C++ 4.1 Subscription
- Microsoft Foundation Class Library 4.2
This article was previously published under Q145719
SYMPTOMS
If you run the DAOENROL sample from Visual C++ version 4.0, 4.1, or 4.2
under Windows 95 and you add a record, you may not see the record in
the result set. If you exit the program, restart it and scroll through
the records. You will then see the added record. The "More Information"
section below gives a more detailed scenario that shows the problem.
CAUSE
The CDaoRecordView class keeps track of the first and last record by using
Microsoft Jet bookmarks. Microsoft Jet bookmarks should not be assumed to
be valid following a Requery(). DAOENROL does a Requery() following an add
and a move, but it continues to use the bookmark values it obtained before
the Requery() was done.
RESOLUTION
To fix the DAOENROL sample, you must re-initialize the CDaoRecordView
bookmark members following a Requery(). DAOENROL performs a Requery() in
three places:
- in the CAddForm::OnMove() function in Addform.cpp.
- in the CSectionForm::OnSelendokCourselist() function in Sectform.cpp.
- in the CSectionForm::OnMove() function in SectForm.cpp.
In each of these locations, you should add code similar to this:
m_pSet->Requery(); // here's the existing Requery()
m_varBookmarkCurrent = 1L; // add these...
m_varBookmarkFirst = // ...lines of...
m_varBookmarkLast = 0L; // ..code!
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. We are researching this problem and will
post new information here in the Microsoft Knowledge Base as it becomes
available.
REFERENCES
For more information, please see the following article in the Microsoft
Knowledge Base:
145686 PRB: CDaoRecordView Bookmark Members Invalid After Requery()
Additional query words: kbVC400bug
Keywords: kbbug kbdatabase kbother KB145719