Solved

Assertion error on UpdateData(True) Command

Posted on 1998-05-24
2
1,159 Views
Last Modified: 2013-11-20
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
Comment
Question by:AsifMughal
  • 2
2 Comments
 
LVL 3

Accepted Solution

by:
tma050898 earned 200 total points
ID: 1314649
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
 
LVL 3

Expert Comment

by:tma050898
ID: 1314650
Could you post your OnInitDialog or OnInitialUpdate???
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This is to be the first in a series of articles demonstrating the development of a complete windows based application using the MFC classes.  I’ll try to keep each article focused on one (or a couple) of the tasks that one may meet.   Introductio…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question