Previous | Index | Next 

[PRB] Assigning a StdDataFormat object to the DataFormat property of an ADODB.Field causes runtime errors

VB Migration Partner support custom formatting in bound controls. References to StdDataFormat objects are converted to VB6StdDataFormat objects and migrated VB.NET applications works like the original VB6 app. VB Migration Partner even support custom formatting by means of the Format and Unformat events of the StdDataFormat class.

Everything works well when the VB6StdDataFormat object is assigned to the DataFormat property of a control. However, if the VB6StdDataFormat object is assigned to the DataFormat property of an ADODB.Field object you get a runtime exception, because the DataFormat property is expected to receive a COM StdDataFormat object, not the .NET VB6StdDataFormat object.

You can fix this problem by wrapping the StdDataFormat object in a ToStdDataFormat6 method, which is defined in the VisualBasic6_Support.bas module. Alternatively, you can use a ReplaceStatement pragma to insert the method call during the migration process, as in this example:

        Dim std As New StdDataFormat
        sdf.Type = fmtCustom
        sdf.Format = "MM.dd"
        '## ReplaceStatement rs("OrderDate").DataFormat = ToStdDataFormat6(std)
        Set rs("OrderDate").DataFormat = std

Notice that the ToStdDataFormat6 method requires a reference to the Microsoft.StdFormat DLL. You can this reference manually after the migration or, better, automatically during the migration by means of an AddReference pragma.

 

Previous | Index | Next