Link to home
Start Free TrialLog in
Avatar of tman43
tman43

asked on

How do I cast ADODB.Recordset.Fields values to integers?

I would like to associate the ID's of tableMoose with a range of values from tableBear. The following code gives an "Input string was not in a correct format" error in the If statement. I am having trouble casting the cell values to integers in order to make comparisons in the if statement. The code is ported from VB6 which allowed a cast to integer in the If statement. I am using DotNet 2.0.

Thanks.
private void fill_ID()
            {
                ADODB.ConnectionClass conn = new ADODB.ConnectionClass();
                ADODB.Recordset rs = new ADODB.Recordset();
                ADODB.Recordset rs2 = new ADODB.Recordset();
 
                conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "C:" + "\\" + "Foo.mdb", null, null, 0);
                rs.Open("Select ID, columnX FROM tableMoose", conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic, 0);
                rs2.Open("Select ID, columnA, columnB FROM tableBear", conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic, 0);
 
                rs.MoveFirst();
                while (rs.EOF == false)
                {
                    rs2.MoveFirst();
                    while (rs2.EOF == false)
                    {
                        if ((Int32.Parse((rs.Fields["columnX"].ToString())) >= Int32.Parse((rs2.Fields["columnA"].ToString()))) && (Int32.Parse((rs.Fields["columnX"].ToString())) <= Int32.Parse((rs2.Fields["columnB"].ToString()))))
                        {
                            rs.Update("ID", rs2.Fields["ID"]);
                        }
                        rs2.MoveNext();
                    }
                    rs.MoveNext();
                }
            }

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of vbturbo
vbturbo
Flag of Denmark image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of tman43
tman43

ASKER

Assigning the column values to variables and then using the variables to make comparisons in the If statement has removed the "Input string was not in a correct format" error in the If statement. The method now performs correctly.

Thanks much!
            private void fill_ID()
            {
                ADODB.ConnectionClass conn = new ADODB.ConnectionClass();
                ADODB.Recordset rs = new ADODB.Recordset();
                ADODB.Recordset rs2 = new ADODB.Recordset();
 
                conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "C:" + "\\" + "Foo.mdb", null, null, 0);
                rs.Open("Select ID, columnX FROM tableMoose", conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic, 0);
                rs2.Open("Select ID, columnA, columnB FROM tableBear", conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic, 0);
 
                Double arg1;
                Double arg2;
                Double arg3;
 
                rs.MoveFirst();
                while (rs.EOF == false)
                {
                    rs2.MoveFirst();
                    while (rs2.EOF == false)
                    {
                        arg1 = Int32.Parse((rs.Fields["columnX"].Value.ToString()));
                        arg2 = Int32.Parse((rs2.Fields["columnA"].Value.ToString()));
                        arg3 = Int32.Parse((rs2.Fields["column"].Value.ToString()));
 
                        if ((arg1 >= arg2) && (arg1 <= arg3))
                        {
                            rs.Update("ID", rs2.Fields["ID"]);
                        }
                        rs2.MoveNext();
                    }
                    rs.MoveNext();
                }
            }

Open in new window

Avatar of tman43

ASKER

Thanks for your prompt response and clear solution.
Avatar of tman43

ASKER

Note:

Typo on Line 23.

Should be: ...rs2.Fields["columnB"]...