Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1319
  • Last Modified:

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
0
AsifMughal
Asked:
AsifMughal
  • 2
1 Solution
 
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
 
tma050898Commented:
Could you post your OnInitDialog or OnInitialUpdate???
0
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.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now