Problen converting data in a Datarow

I need help converting VB6 DAO code to VB.NET 2003 code with ADO.NET. Here is my old code:

For i% = 0 To RS.Fields.count - 2
           Select Case i%
            Case 0, 1, 2
                RS2.Fields(i%).value = RS.Fields(i%).value
            Case 3
                RS2.Fields(i%).value = PhysUnit$(AinPhysTyp%(AinIDcol(RS.Fields(0).value)), UnitsISO%)
            Case Is > 4
                RS2.Fields(i%).value = ConvertEMUtoISO!(AinPhysTyp%(AinIDcol(RS.Fields(0).value)), RS.Fields(i%).value)
         End Select
This code moves some records from 1 table and adds them to another. Basically what happens here is that if the Case is 3 then the column in the old table contains English Measurement Units (such as F, feet, lbs, etc) The RS2 field then gets assigned the corresponding Metric Unit (C, Meters, Kg, etc)
If the case is > 4 then the old table contains an English Measurement Value (for example 32 or 212) Assuming this is a Temperature then the RS2 field would get set to 0 (for 32F) or 100 (for 212F)

My new code in VB.NET is below:
For Each dr As DataRow In dt101.Rows
            Dim drn As DataRow = dt404.NewRow
            For i As Integer = 0 To 4
                Select Case i
                    Case 0, 1
                        drn.Item(i) = dr.Item(i)
                    Case 2
                        drn.Item(i) = PhysUnit$(AinPhysTyp%((dr.Item(i).tostring())), UnitsISO%)
                    Case 3, 4
                        drn.Item(i) = ConvertEMUtoISO!(AinPhysTyp%(AinIDcol(dr.Item(i))), dr.Item(i).value)
                End Select

In this case dr is the datarow in the old table and drn is the new datarow in the new table. and Case 2 is the Unit column and Case 3 and 4 are LowLimit and HighLimit respectively (Case 3 and 4 are numeric)

The new code as shown above does not work for Case 2, 3 or 4 and I think I am doing something wrong in identifying the row information. In case 2 I tried using toString as shown above and for case 3 and 4 I attempted to use VALUE which also does not work.

Can anyone offer any help with this one?

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

DataRow.Item already returns the value in the relevant cell but As Object.  It looks like your functions might be requiring specific datatypes.  So try express conversions: CStr(dr.Item(i)) where you execting a String and CInt(dr.Item(i)) where you are expecting an Integer, etc.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
For a more detailed run over the relevant stuff, look for "Implicit and Explicit Conversions" in the help files, or see this

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.