F
Floela
I keep geting the exception:
System.InvalidCastException: Specified cast is not valid.
I get this when I try to pass a DataRow into an object method. The line that
causes this error is:
policy.SetValues(dr);
Here is part of the class that contains the method that I want to call:
using System;
using System.Data;
using System.Collections;
namespace IDUL.Policies
{
/// <summary>
/// </summary>
public class Policy
{
private int _qid;
private int _cid;
private string _policy_number;
private string _inception_date;
private string _expiry_date;
private float _raw_premium;
private float _policy_fee;
private float _admin_fee;
private float _ipt;
private float _total_premium;
private bool _is_renewal;
private string _operator;
private string _date_quoted;
private bool _on_cover;
private string _on_cover_date;
private string _on_cover_operator;
/// <summary>
/// </summary>
public Policy()
{
Trace.Constructor("Policy()");
}
/// <summary>
/// </summary>
public Policy(DataRow dr)
{
Trace.EnterConst("Policy(dr)");
if (dr != null)
{
SetValues(dr);
}
Trace.LeaveConst("Policy(dr)");
}
public void SetValues(DataRow dr)
{
_qid = (int)dr["qid"];
_cid = (int)dr["cid"];
_policy_number = dr["policy_number"].ToString();
_inception_date = dr["inception_date"].ToString();
_expiry_date = dr["expiry_date"].ToString();
_raw_premium = (float)dr["raw_premium"];
_policy_fee = (float)dr["policy_fee"];
_admin_fee = (float)dr["admin_fee"];
_ipt = (float)dr["ipt"];
_total_premium = (float)dr["total_premium"];
_is_renewal = (bool)dr["is_renewal"];
_operator = dr["operator"].ToString();
_date_quoted = dr["date_quoted"].ToString();
_on_cover = (bool)dr["on_cover"];
_on_cover_date = dr["on_cover_date"].ToString();
_on_cover_operator = dr["on_cover_operator"].ToString();
}
}
The code that instantiates the class and calls the method is in here:
foreach (DataTable dt in dsPolicies.Tables)
{
foreach (DataRow dr in dt.Rows)
{
Policy policy = new Policy();
policy.SetValues(dr);
arrPolicies.Add(policy);
}
}
Any ideas what is causing this exception?
System.InvalidCastException: Specified cast is not valid.
I get this when I try to pass a DataRow into an object method. The line that
causes this error is:
policy.SetValues(dr);
Here is part of the class that contains the method that I want to call:
using System;
using System.Data;
using System.Collections;
namespace IDUL.Policies
{
/// <summary>
/// </summary>
public class Policy
{
private int _qid;
private int _cid;
private string _policy_number;
private string _inception_date;
private string _expiry_date;
private float _raw_premium;
private float _policy_fee;
private float _admin_fee;
private float _ipt;
private float _total_premium;
private bool _is_renewal;
private string _operator;
private string _date_quoted;
private bool _on_cover;
private string _on_cover_date;
private string _on_cover_operator;
/// <summary>
/// </summary>
public Policy()
{
Trace.Constructor("Policy()");
}
/// <summary>
/// </summary>
public Policy(DataRow dr)
{
Trace.EnterConst("Policy(dr)");
if (dr != null)
{
SetValues(dr);
}
Trace.LeaveConst("Policy(dr)");
}
public void SetValues(DataRow dr)
{
_qid = (int)dr["qid"];
_cid = (int)dr["cid"];
_policy_number = dr["policy_number"].ToString();
_inception_date = dr["inception_date"].ToString();
_expiry_date = dr["expiry_date"].ToString();
_raw_premium = (float)dr["raw_premium"];
_policy_fee = (float)dr["policy_fee"];
_admin_fee = (float)dr["admin_fee"];
_ipt = (float)dr["ipt"];
_total_premium = (float)dr["total_premium"];
_is_renewal = (bool)dr["is_renewal"];
_operator = dr["operator"].ToString();
_date_quoted = dr["date_quoted"].ToString();
_on_cover = (bool)dr["on_cover"];
_on_cover_date = dr["on_cover_date"].ToString();
_on_cover_operator = dr["on_cover_operator"].ToString();
}
}
The code that instantiates the class and calls the method is in here:
foreach (DataTable dt in dsPolicies.Tables)
{
foreach (DataRow dr in dt.Rows)
{
Policy policy = new Policy();
policy.SetValues(dr);
arrPolicies.Add(policy);
}
}
Any ideas what is causing this exception?