Solved

Assertion error on UpdateData(True) Command

Posted on 1998-05-24
2
1,165 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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Expand data scrubbing tool 13 36
deburging in oracle form 12 109
windows 10 how make picture as desktop background 2 66
sum13 challenge 24 132
Introduction: Displaying information on the statusbar.   Continuing from the third article about sudoku.   Open the project in visual studio. Status bar – let’s display the timestamp there.  We need to get the timestamp from the document s…
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.
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …

679 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