Article ID: 813647
Article Last Modified on 11/22/2006
APPLIES TO
- Microsoft Visual Studio .NET 2002 Academic Edition
- Microsoft Visual Studio .NET 2002 Enterprise Architect
- Microsoft Visual Studio .NET 2002 Enterprise Developer
- Microsoft Visual Studio .NET 2002 Professional Edition
CPR - VS .NET - Hotfix in SP1
SYMPTOMS
The behavior of the Microsoft Foundation Classes (MFC) and the Active Template Library (ATL) method COleDateTime::SetDate changed in Microsoft Visual C++ .NET. In the .NET version, when you type an incorrect date, the object status no longer sets a status of invalid. Instead, the object status converts the date to the nearest valid value. This may result in unexpected behavior for applications that depend on the invalid status of the COleDateTime object. The behavior is different from the Microsoft Developer Network (MSDN) information that shipped with .NET version of the Visual C++ .NET libraries.
RESOLUTION
Service pack information
To resolve this problem, obtain the latest service pack for Microsoft Visual Studio .NET. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
837234 List of bugs that are fixed in Visual Studio .NET 2002 Service Pack 1
Hotfix information
The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
Date Time Version Size File name --------------------------------------------------------------- 24-Jan-2003 02:06 2,011,136 Atl70.pdb 12-Sep-2002 16:50 39,733 afxdao.h 24-Jan-2003 02:06 7.0.9660.0 84,992 atl70.dll 23-Jul-2002 20:08 3,443 atlbase.cpp 23-Jul-2002 20:08 163,480 atlbase.h 20-Jan-2003 20:07 16,396 atlcomtime.inl 23-Jul-2002 20:08 15,521 atlcore.h 23-Jul-2002 20:08 43,105 atlimage.h 24-Jan-2003 02:06 48,090 atlmincrt.lib 24-Jan-2003 02:06 659,456 atlmincrt.pdb 24-Jan-2003 02:06 1,003,890 atlsd.lib 24-Jan-2003 02:06 1,306,624 atlsd.pdb 24-Jan-2003 02:06 934,264 atls.lib 24-Jan-2003 02:06 1,306,624 atls.pdb 24-Jan-2003 02:06 14,546 atl.lib 11-Nov-2002 22:45 63,284 cstringt.h 05-Dec-2002 20:21 116,779 dbcore.cpp 12-Sep-2002 16:50 19,956 makefile 24-Jan-2003 03:36 7.0.9660.0 40,960 mfc70chs.dll 24-Jan-2003 03:36 7.0.9660.0 45,056 mfc70cht.dll 24-Jan-2003 03:36 7.0.9660.0 61,440 mfc70deu.dll 24-Jan-2003 03:22 527,756 mfc70d.def 24-Jan-2003 03:23 3,066,694 mfc70d.lib 24-Jan-2003 03:36 7.0.9660.0 57,344 mfc70enu.dll 24-Jan-2003 03:36 7.0.9660.0 61,440 mfc70esp.dll 24-Jan-2003 03:36 7.0.9660.0 61,440 mfc70fra.dll 24-Jan-2003 03:36 7.0.9660.0 61,440 mfc70ita.dll 24-Jan-2003 03:36 7.0.9660.0 49,152 mfc70jpn.dll 24-Jan-2003 03:36 7.0.9660.0 49,152 mfc70kor.dll 24-Jan-2003 03:24 528,736 mfc70ud.def 24-Jan-2003 03:25 7.0.9660.0 2,066,944 mfc70ud.dll 24-Jan-2003 03:27 3,978,842 mfc70ud.lib 24-Jan-2003 03:43 393,034 mfc70u.def 24-Jan-2003 03:57 7.0.9660.0 1,016,832 mfc70u.dll 24-Jan-2003 03:29 3,042,324 mfc70u.lib 24-Jan-2003 03:42 392,265 mfc70.def 24-Jan-2003 04:07 7.0.9660.0 1,028,096 mfc70.dll 24-Jan-2003 03:24 2,287,020 mfc70.lib 12-Sep-2002 16:50 7,662 mfcdll.mak 24-Jan-2003 03:23 526,960 mfcs70d.lib 24-Jan-2003 03:25 468,956 mfcs70ud.lib 24-Jan-2003 03:44 452,554 mfcs70u.lib 24-Jan-2003 03:43 505,780 mfcs70.lib 24-Jan-2003 03:36 10,513,408 mfc.bsc 24-Jan-2003 03:18 16,598,882 nafxcwd.lib 24-Jan-2003 03:17 2,093,056 nafxcwd.pdb 24-Jan-2003 03:19 16,468,250 nafxcw.lib 24-Jan-2003 03:18 2,068,480 nafxcw.pdb 20-Sep-2002 00:18 44,958 oledisp1.cpp 24-Jan-2003 03:21 17,032,292 uafxcwd.lib 24-Jan-2003 03:20 2,093,056 uafxcwd.pdb 24-Jan-2003 03:22 16,743,760 uafxcw.lib 24-Jan-2003 03:21 2,068,480 uafxcw.pdb 05-Nov-2002 18:40 34,858 viewprev.cpp 24-Jan-2003 03:23 7.0.9660.0 2,072,576 Mfc70d.dll 24-Jan-2003 03:23 1,791,934 Mfc70d.map 24-Jan-2003 03:23 7,875,584 Mfc70d.pdb 24-Jan-2003 03:25 1,842,070 Mfc70ud.map 24-Jan-2003 03:25 7,908,352 Mfc70ud.pdb 24-Jan-2003 03:57 9,964,544 Mfc70u.pdb 24-Jan-2003 04:07 1,149,706 Mfc70.map 24-Jan-2003 04:07 9,980,928 Mfc70.pdb 24-Jan-2003 03:23 1,888,256 Mfcs70d.pdb 24-Jan-2003 03:25 1,896,448 Mfcs70ud.pdb 24-Jan-2003 03:44 1,888,256 Mfcs70u.pdb 24-Jan-2003 03:43 1,880,064 Mfcs70.pdb
MORE INFORMATION
The observed behavior occurs because of a change in the implementation of COleDateTime. The new implementation uses SystemTimeToVariantTime function to convert the value that is supplied to the COleDateTime object.
Visit the following Microsoft Developer Network Web site for more information about SystemTimeToVariantTime function:
The SystemTimeToVariantTime function accepts invalid dates and then tries to fix them when resolving to a VARIANT time. For example, an invalid date such as 2/29/2001 will resolve to 3/1/2001. However, the Visual Studio .NET 2002 MSDN entry for COleDateTime::SetDate states that an invalid (1) state would be set for the object.
The following code replicates the problem:
COleDateTime dtDate; CString szDate; BOOL bOK; bOK = dtDate.SetDate(2003, 2, 29); if((bOK == 0) && (dtDate.GetStatus() == COleDateTime::valid)) { szDate = dtDate.Format(); AfxMessageBox(szDate); }
Note You may have to recompile your code after you apply this fix.
STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Visual Studio .NET 2002 Service Pack 1.
Keywords: kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbfix kbbug KB813647