Assertion error on UpdateData(True) Command

Hello All

Whilst running my application, I am getting the following error, when the program try's to execute the command "UpdateData(True)"

"Debug Assertion Failed!
Program C:\Applications\test40.exe
File dlgdata.cpp
Line 565

The message box gives the options to: Abort, retry and Ignore.  When you retry or ignore the program crashes.

On pressing the retry button, the debugger points to the first ASSERT statement below.

void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl)
{
      if (rControl.m_hWnd == NULL)    // not subclassed yet
      {
            ASSERT(!pDX->m_bSaveAndValidate);

            HWND hWndCtrl = pDX->PrepareCtrl(nIDC);

            if (!rControl.SubclassWindow(hWndCtrl))
            {
                  ASSERT(FALSE);      // possibly trying to subclass twice?
                  AfxThrowNotSupportedException();
            }
#ifndef _AFX_NO_OCC_SUPPORT
            else
            {
                  // If the control has reparented itself (e.g., invisible control),
                  // make sure that the CWnd gets properly wired to its control site.
                  if (pDX->m_pDlgWnd->m_hWnd != ::GetParent(rControl.m_hWnd))
                        rControl.AttachControlSite(pDX->m_pDlgWnd);
            }
#endif //!_AFX_NO_OCC_SUPPORT

      }
}

I checked to make sure that the :DoDataExchange function is not refering to any control which does is not present in the dialog.

After tracing though the code, the assertion error occurs on the first line of the code in the DoDataExchange function, i.e

DDX_Control(pDX, IDC_BTNSPECIALOFFERS, m_ctlBtnSpecialOffers);

However it appears to work on DDX_Text macros.  I have also tried: m_bSaveAndValidate = True, but still this does not make any difference.

This application works fine under Visual C++ 2.0 using ODBC, but I am experiencing the above problem when converting the application to Visual C++ 4.0 using DAO.

Is anyone aware of the possible cause of this error.  I have double checked the DoDataExchange() function and there appears to be nothing wrong with it.

I very much look forward to any suggestions of the possible cause of this error.  Please reply by e-mail: AsifMughal@aol.com

Best Regards

Asif
AsifMughalAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

tma050898Commented:
Where are you calling UpdateData(TRUE) from???

Are you using dialogs or views?

If you are using dialogs, did you call the base class' OnInitDialog. Is your call to UpdateData(TRUE) before that call?

If you are using views, did you call the base class' OnInitialUpdate? Is your call to UpdateData(TRUE) before that call?

This sounds like you aren't getting subclassed before you are callign UpdateData(TRUE). The base class initialization routines (OnInitialUpdate for views and OnInitDialog for dialogs) calls UpdateData(FALSE). If you removed that or if you placed your call to UpdateData(TRUE) before that, this is your problem.

Tom
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
tma050898Commented:
Could you post your OnInitDialog or OnInitialUpdate???
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.