FIX: ClassWizard Overrides CDaoRecordset::Open Incorrectly (153282)



The information in this article applies to:

  • The ClassWizard, when used with:
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 4.1

This article was previously published under Q153282

SYMPTOMS

If you override the CDaoRecordset::Open() function using ClassWizard, the new function will never be called.

CAUSE

The Wizard places an UINT type for the first parameter rather than an int. The code should read:
   virtual void Open(int ...)
				
rather than:
   virtual void Open(UINT...)
				

RESOLUTION

Change the type of the first parameter in your Open() function from UINT to

int in the .h and .cpp files.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was corrected in Visual C++ version 4.2.

MORE INFORMATION

Sample Code

The following sample code shows the correct function prototype for a CDaoRecordset-derived class named CMySet:
   // CMySet.H:
   virtual void Open(int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
           LPCTSTR lpszSql = NULL, int nOptions = 0);
   // CMySet.CPP:
   void CMySet::Open(int nOpenType, LPCTSTR lpszSql, int nOptions)
   {
       // TODO: Add your specialized code here and/or call the base class
       CDaoRecordset::Open(nOpenType, lpszSql, nOptions);
   }
				

Modification Type:MajorLast Reviewed:10/17/2003
Keywords:kbbug kbDatabase kbfix kbVC420fix KB153282