VB Migration Partner

KNOWLEDGE BASE - Forms and controls


Previous | Index | Next 

[PRB] The DTPicker control doesn’t accept dates earlier than 1/1/1753

The VB6 DTPicker control accepts dates as early as 1/1/1601 and as late as 12/31/9999, and in fact these are the default values for the MinDate and MaxDate properties, respectively. Conversely, the .NET DateTimePicker control doesn’t accept dates earlier than 1/1/1753 or later than 12/31/9998. Any attempt to assign dates outside this range to the Value, MinDate or MaxDate properties throws an InvalidOperationException error.

Even if the VB6 application doesn’t work with dates in the 17th century, it might read the MinDate and MaxDate properties to check whether there is a restriction to date selection. In VB6, such a piece of code would read more or less like this:

        ' check whether there is a restriction to date selection
        If DTPicker1.MinDate <> #1/1/1601# Or DTPicker1.MaxDate <> #12/31/9999# Then
            ' ...
        End If

This code can’t work correctly after the migration to VB.NET, because the VB6DTPicker’s MinDate and MaxDate properties are initialized to different values. Therefore the code must be modified as follows:

        ' check whether there is a restriction to date selection
        #If VBC_VER = 8 Then
        If DTPicker1.MinDate <> #1/1/1753# Or DTPicker1.MaxDate <> #12/31/9998# Then
        #Else
        If DTPicker1.MinDate <> #1/1/1601# Or DTPicker1.MaxDate <> #12/31/9999# Then
        #End If
            ' ...
        End If

Another solution is based on the VB6DTPicker_MinDate and VB6DTPicker_MaxDate constants. These constants are defined both in the VBMigrationPartner_Support module and in the control support library, but have different values. You can use these constants to simplify the test as follows:

        ' check whether there is a restriction to date selection
        If DTPicker1.MinDate <> VB6DTPicker_MinDate Or _
            DTPicker1.MaxDate <> VB6DTPicker_MaxDate Then
            ' ...
        End If
Previous | Index | Next 




Follow Francesco Balena on VB6 migration’s group on

LinkedIn





Read Microsoft Corp’s official case study of a VB6 conversion using VB Migration Partner.




Code Architects and its partners offers remote and onsite migration services.

More details




Subscribe to our free newsletter for useful VB6 migration tips and techniques.

newsletter



To learn more about your VB6 applications, run VB6 Analyzer on your source code and send us the generated text file. You will receive a detailed report about your VB6 applications and how VB Migration Partner can help you to quickly and effectively migrate it to .NET.

Get free advice



A fully-working, time-limited Trial Edition of VB Migration Partner allows you to test it against your actual code

Get the Trial




The price of VB Migration Partner depends on the size of the VB6 application, the type of license, and other factors

Request a quote




Migrating a VB6 application in 10 easy steps

Comparing VB Migration Partner with Upgrade Wizard

Migration tools: Feature Comparison Table

All whitepapers