Knowledge Base

FIX: ClassWizard Overrides CDaoRecordset::Open Incorrectly

Article ID: 153282

Article Last Modified on 10/17/2003


APPLIES TO


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);
   }
				

Additional query words: kbVC400bug

Keywords: kbbug kbfix kbvc420fix kbdatabase KB153282