James Horne
Making the fixes.
After the upgrade is done, you can't simply compile the new
project and run it. You'll get compiler errors that must be fixed. The rest of
this article will dig into four types of issues:
-
Compile errors that you must fix to get the package working. We'll
tell you how to fix them.
-
Warnings left as comments in the code. We'll tell you whether you
need to worry about them or not.
-
Upgrade notes left as comments in the code. In general, you
should carefully consider these notes to ensure that the code is correct.
-
Conversions that took place as part of the upgrade. We'll review
them as they illustrate the differences between Visual Basic 6.0 and Visual
Basic .NET
How to fix the compiler errors
Three errors must be resolved before you can run the DTS
package in the .NET environment. Fixing these problems should take no more then
10 minutes.
Compiler error #1 Argument not specified
Change:
tracePackageError(goPackage.Steps.Item)
To:
tracePackageError(goPackage)
TracePackageError() takes a DTSPackage as an input argument,
but the code that was generated tries to pass a Step object. Simply changing
the argument to the container package solves the problem and allows the tracePackageError
method to walk through all the steps of the package correctly.
Compiler error #2 and #3: Constructor call is valid only as the first
statement in an instance constructor
The error message is misleading. The solution is.
Change:
Public Sub Task_Sub1(ByVal goPackage
As Object)
:
oTask = goPackage.Tasks.New("DTSDataPumpTask")
To:
Public Sub Task_Sub1(ByVal goPackage
As DTS.Package2)
:
oTask = goPackage.Tasks.New("DTSDataPumpTask")
and change:
Public Sub oCustomTask1_Trans_Sub1(ByVal
oCustomTask1 As Object)
:
oTransformation = oCustomTask1.Transformations.New("DTSPump.DataPumpTransformScript")
To:
Public Sub oCustomTask1_Trans_Sub1(ByVal
oCustomTask1 As DTS.DataPumpTask2)
:
oTransformation = oCustomTask1.Transformations.New("DTSPump.DataPumpTransformScript"))
:
oTransformation = oCustomTask1.Transformations.New("DTSPump.DataPumpTransformScript")
Both cases occur because a formal parameter is declared as a
generic "Object." In Visual Basic 6.0 this worked because it took advantage of
the default
property that could be used as a shortcut in the code. Visual Basic .NET no longer supports the default
property. The simple solution is to replace the "Object" formal parameter with
the actual object required.