异常处理

bapiyang008 2010-10-23 02:11:08
我的机器上执行时没有错误,为什么在客户的机器上执行时会发生错误。我的系统是"Win7"而它的系统是“XP”.还有,在俺这边的XP的机器上也可以正常运行。

错误发生在执行事件“HZSJ_ASHZ_ValueChanged”时,“HZSJ_ASHZ”是个“DateTimePicker”控件。
private void HZSJ_ASHZ_ValueChanged(object sender, EventArgs e)
{
//先清空数据
BKSR_ASHZ.Text = "";
CZSR_ASHZ.Text = "";
XJSR_ASHZ.Text = "";
SPSR_ASHZ.Text = "";

HZSJ_ASHZ1.Text = HZSJ_ASHZ.Text;


//办卡收入
string hzsj=HZSJ_ASHZ.Value.ToString("yyyy-MM-dd");
string sql = "select sffy from hykblb where bksj=#"+hzsj+"#";
AccessDB access = new AccessDB();
OleDbDataReader rd = access.RunAs(sql);
int sum=0;
while (rd.Read())
{
if (rd["sffy"].ToString() != "")
{
int num = int.Parse(rd["sffy"].ToString());
sum = sum + num;

}
else
{
continue;
}
}
BKSR_ASHZ.Text = sum.ToString();
rd.Close();

出错信息如下:
Unhanded exception has occured in your application。if you click continue ,one application will ignore this error and attempt to continew . if you click Quit,the application will dose immediatly .

Input string was not in a correct format。

有的大侠说:int num = int.Parse(...);是异常抛出的地方,是因为查询结果为空。但是在这里不是进行“if (rd["sffy"].ToString() != "")”的判断了吗?
还有的大侠说是因为“日期形式”但是在Access数据库中“bksj”的字段是“日期/时间”型的字段,其值为“2010-10-08”。

这不知道是什么原因造成的。

如果在这里加“Try catch”语句捕获异常应该怎样加?捕获的是什么类型的异常?
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bapiyang008 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 moneynumber_1 的回复:]
你试一下这么写

private void HZSJ_ASHZ_ValueChanged(object sender, EventArgs e)
{
//先清空数据
BKSR_ASHZ.Text = "";
CZSR_ASHZ.Text = "";
XJSR_ASHZ.Text = "";
SPSR_ASHZ.Text = "";

HZSJ_ASH……
[/Quote]

能解释下为什么那么写吗?如果加上异常处理,俺那种写法对吗?
bapiyang008 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 moneynumber_1 的回复:]
你试一下这么写

private void HZSJ_ASHZ_ValueChanged(object sender, EventArgs e)
{
//先清空数据
BKSR_ASHZ.Text = "";
CZSR_ASHZ.Text = "";
XJSR_ASHZ.Text = "";
SPSR_ASHZ.Text = "";

HZSJ_ASH……
[/Quote]

能解释下为什么那么写吗?如果加上异常处理,俺那种写法对吗?
moneyNUMBER_1 2010-10-23
  • 打赏
  • 举报
回复
你试一下这么写

private void HZSJ_ASHZ_ValueChanged(object sender, EventArgs e)
{
//先清空数据
BKSR_ASHZ.Text = "";
CZSR_ASHZ.Text = "";
XJSR_ASHZ.Text = "";
SPSR_ASHZ.Text = "";

HZSJ_ASHZ1.Text = HZSJ_ASHZ.Text;


//办卡收入
string hzsj=HZSJ_ASHZ.Value.ToString("yyyy-MM-dd");//这里是value还是Text你再确定下
如果你不觉得浪费了你太多的空间建议你
DataTime dt =
string hzsj = DataTime.parse(HZSJ_ASHZ.一个可以取到值的属性.ToString()).ToString("yyyy-MM-dd");

string sql = "select sffy from hykblb where bksj=#"+hzsj+"#";
AccessDB access = new AccessDB();
OleDbDataReader rd = access.RunAs(sql);
int sum=0;
while (rd.Read())
{
if (rd["sffy"]!=null&&rd["sffy"].ToString() != "")
{
int num = int.Parse(rd["sffy"].ToString());
sum = sum + num;

}
}
BKSR_ASHZ.Text = sum.ToString();
rd.Close();

不要照copying我不确定所有单词的大小写完全正确
bapiyang008 2010-10-23
  • 打赏
  • 举报
回复
是不是这样写。

string hzsj="";

try
{
hzsj=HZSJ_ASHZ.Value.ToString("yyyy-MM-dd");
}
catch(Exception ex)
{
DateTime hzsj=DateTime.ParseExact(HZSJ_ASHZ.Text,"yyyy-MM-dd");

}

bapiyang008 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
try
{
}
catch(Exception ex)
{}
System.FormatException
DateTime.parseExact转换
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/8adaad55-b502-4191-b40e-85e065847a27
[/Quote]

梦哥能详细点不,全英文啊。

是不是这样写。

try
{
hzsj=HZSJ_ASHZ.Value.ToString("yyyy-MM-dd");
}
catch(Exception ex)
{
//DateTime.parseExact转换

}

这到底是怎么转化?小弟看不懂啊?
wuyq11 2010-10-23
  • 打赏
  • 举报
回复
try
{
}
catch(Exception ex)
{}
System.FormatException
DateTime.parseExact转换
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/8adaad55-b502-4191-b40e-85e065847a27

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧