开发了一个C# form程序。在自己电脑上完全没错误,测试时,在有些电脑上没问题,在有些电脑上出现异常“输入字符串的格式不正确”向高手求解。
解决方案 »
- C# WINFORM中WebBrowser中DocumentCompleted事件
- C# 获取404 不存在后的URL
- 关于datagridview导入excel里面的问题
- C#编译exe时要添加SQLserver数据库文件的问题
- 如何应用CDO?
- c# webbrowser刷新,在线等!
- 初学者问题,关于命名空间
- WinForm 单击X 关闭时,给出选择提示!是否关闭? 是:关闭 否:不关闭
- 关于Microsoft.Fakes的使用问题
- Window服务不能执行
- 求助:Microsoft Visual Studio 2010 C# 开发 Windows窗体应用程序,引用dll总是失败
- 如何点击TreeView节点在DataGridView中显示相应数据???
这个异常是我自己用 try{} catch(exception e){messagebox(e)} 结构,通过一个小对话框输出异常信息的。 出现异常的机器没有开发软件工具,不知道怎么去调试。
{
int month = 0;
float xiaoshou = 0;
float tuikuan = 0;
float huikuan = 0;
float xiaoshouJe = 0;
float tuikuanJe = 0;
float huikuanJe = 0;
float qichu = 0;
float qimo = 0;
float qichuJe = 0;
float qimoJe = 0;
string coName;
string product;
string hwgg; try
{
SqlConnection mainformConn = DataBaseConn(); //table1: 日期,往来单位,货物名称,数量,总金额,单价,货物规格
SqlDataAdapter thisAdapter = new SqlDataAdapter(
"select rq, wldw, hwmc, sl, zke, dj, hwgg from x_fh, x_fhhw"
+ " where x_fh.ID = x_fhhw.fhid and x_fh.iszf = 0 and x_fh.iskp =1"
+ " order by dj, hwmc, wldw, rq", mainformConn);
thisAdapter.Fill(thisDataSet, "table1"); //table2: 核销日期,核销数量,货物名称,单位名称,核销金额
thisAdapter = new SqlDataAdapter(
"select x_hx.hxrq,x_hx.hxsl,x_hx.hwmc,x_fp.dwmc,x_hx.hxje, x_hx.hwgg from x_hx,x_fp"
+ " where x_hx.fph = x_fp.fph"
+ " order by x_hx.hwmc, x_fp.dwmc, x_hx.hxrq", mainformConn);
thisAdapter.Fill(thisDataSet, "table2"); //table2: 添加一列,标识一行是否被使用过。列初始化为false,即没使用过。
DataColumn col = new DataColumn();
col.DataType = typeof(Boolean);
col.ColumnName = "isused";
col.DefaultValue = false;
thisDataSet.Tables["table2"].Columns.Add(col); #region table1: 添加列,thsl.thje,xssl.xsje。初始化值为0
DataColumn th_sl = new DataColumn();
DataColumn th_je = new DataColumn();
DataColumn xs_sl = new DataColumn();
DataColumn xs_je = new DataColumn();
th_sl.DataType = typeof(float);
th_je.DataType = typeof(float);
xs_sl.DataType = typeof(float);
xs_je.DataType = typeof(float);
th_sl.ColumnName = "thsl";
th_je.ColumnName = "thje";
xs_sl.ColumnName = "xssl";
xs_je.ColumnName = "xsje";
th_sl.DefaultValue = 0;
th_je.DefaultValue = 0;
xs_sl.DefaultValue = 0;
xs_je.DefaultValue = 0;
thisDataSet.Tables["table1"].Columns.Add(th_sl);
thisDataSet.Tables["table1"].Columns.Add(th_je);
thisDataSet.Tables["table1"].Columns.Add(xs_sl);
thisDataSet.Tables["table1"].Columns.Add(xs_je);
#endregion table1: 添加列,thsl.thje,xssl.xsje。初始化值为0 # region 主循环为table1,主循环内部循环table2
{ if (thisDataSet.Tables["table1"].Rows[i]["hwgg"].ToString() == "")
{
thisDataSet.Tables["table1"].Rows[i]["hwgg"] = "无";
} //从sl,zke中,根据正负号,分离成销售和退货
if (thisDataSet.Tables["table1"].Rows[i][3].ToString()[0] == '-')
{
thisDataSet.Tables["table1"].Rows[i]["thsl"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["thsl"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i][3].ToString()); thisDataSet.Tables["table1"].Rows[i]["thje"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["thje"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["zke"].ToString());
}
else
{
thisDataSet.Tables["table1"].Rows[i]["xssl"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["xssl"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i][3].ToString()); thisDataSet.Tables["table1"].Rows[i]["xsje"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["xsje"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["zke"].ToString());
} if ((i + 1) < thisDataSet.Tables["table1"].Rows.Count)
{
if ((thisDataSet.Tables["table1"].Rows[i][0].ToString().Substring(0, 7)
== thisDataSet.Tables["table1"].Rows[i + 1][0].ToString().Substring(0, 7))// 比对月份
&& (thisDataSet.Tables["table1"].Rows[i][1].ToString()
== thisDataSet.Tables["table1"].Rows[i + 1][1].ToString())//比对单位名称
&& (thisDataSet.Tables["table1"].Rows[i][2].ToString()
== thisDataSet.Tables["table1"].Rows[i + 1][2].ToString())//比对货物名称
&& (thisDataSet.Tables["table1"].Rows[i][5].ToString()
== thisDataSet.Tables["table1"].Rows[i + 1][5].ToString()))//比对货物单价
{
thisDataSet.Tables["table1"].Rows[i + 1]["thsl"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i + 1]["thsl"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["thsl"].ToString()); thisDataSet.Tables["table1"].Rows[i + 1]["thje"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i + 1]["thje"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["thje"].ToString()); thisDataSet.Tables["table1"].Rows[i + 1]["xssl"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i + 1]["xssl"].ToString())
+Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["xssl"].ToString()); thisDataSet.Tables["table1"].Rows[i + 1]["xsje"]
=Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i + 1]["xsje"].ToString())
+ Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["xsje"].ToString());
continue;
}
} /*从表table1中取出月份*/
string strMonth = thisDataSet.Tables["table1"].Rows[i][0].ToString();
if (strMonth.Substring(0,4) == year)
{
strMonth = strMonth.Substring(5, 2);
if (strMonth[1] == '/')
{
strMonth = strMonth.Substring(0, 1);
}
}
else
{
strMonth = "0";
}
month = Convert.ToInt32(strMonth); /*往来单位*/
coName = thisDataSet.Tables["table1"].Rows[i][1].ToString();
/*地区名称*/
hwgg = thisDataSet.Tables["table1"].Rows[i]["hwgg"].ToString();
/*产品名称*/
product = thisDataSet.Tables["table1"].Rows[i][2].ToString(); /*本月销售赋值*/
xiaoshou =Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["xssl"].ToString());
xiaoshouJe =Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["xsje"].ToString());
/*本月退款赋值*/
tuikuan =Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["thsl"].ToString());
tuikuanJe =Convert.ToSingle(thisDataSet.Tables["table1"].Rows[i]["thje"].ToString());
//本月回款初始化为0
huikuan = 0;
huikuanJe = 0; #region for(int n=0; n<thisDataSet.Tables["table2"].Rows.Count; n++)
for (int n=0; n<thisDataSet.Tables["table2"].Rows.Count; n++)
{
bool monCompare;//判断回款对应的月份 /*月份为1~9*/
if (thisDataSet.Tables["table2"].Rows[n][0].ToString().Substring(6, 1) == "/")
{
monCompare = (month.ToString()
== thisDataSet.Tables["table2"].Rows[n][0].ToString().Substring(5,1));
}
/*月份为10~12*/
else
{
monCompare = (month.ToString()
== thisDataSet.Tables["table2"].Rows[n][0].ToString().Substring(5,2));
} /*月份、产品型号、公司名称都对应的回款及汇款金额*/
if ((monCompare)
&& (product
== thisDataSet.Tables["table2"].Rows[n][2].ToString())
&& (coName
== thisDataSet.Tables["table2"].Rows[n][3].ToString())
&& (bool.Parse(thisDataSet.Tables["table2"].Rows[n]["isused"].ToString())
== false))
{
huikuan = huikuan
+Convert.ToSingle(thisDataSet.Tables["table2"].Rows[n][1].ToString());
huikuanJe = huikuanJe
+Convert.ToSingle(thisDataSet.Tables["table2"].Rows[n][4].ToString()); thisDataSet.Tables["table2"].Rows[n]["isused"] = true;
}
}
#endregion for(int n=0; n<thisDataSet.Tables["table2"].Rows.Count; n++) fillTableCol(month.ToString(), product, xiaoshou, tuikuan,
coName, huikuan, xiaoshouJe, tuikuanJe, huikuanJe, hwgg);
}
# endregion 主循环为table1,主循环内部循环table2 DataRow[] table2DataRows = null;
table2DataRows = thisDataSet.Tables["table2"].
Select("isused = false");
foreach (DataRow drTable2 in table2DataRows)
{
if (drTable2[0].ToString().Substring(0,4) == year)
{
/*月份为1~9*/
if (drTable2[0].ToString().Substring(6, 1) == "/")
{
month = Convert.ToInt32(drTable2[0].ToString().Substring(5,1));
}
/*月份为10~12*/
else
{
month = Convert.ToInt32(drTable2[0].ToString().Substring(5,2));
}
product= drTable2[2].ToString();
xiaoshou = 0;
tuikuan = 0;
coName = drTable2[3].ToString();
huikuan=Convert.ToSingle(drTable2[1].ToString());
xiaoshouJe = 0;
tuikuanJe = 0;
huikuanJe =Convert.ToSingle(drTable2[4].ToString());
hwgg = drTable2["hwgg"].ToString();
fillTableCol(month.ToString(), product, xiaoshou, tuikuan,
coName, huikuan, xiaoshouJe, tuikuanJe, huikuanJe, hwgg);
}
else
{
month = 0;
product = drTable2[2].ToString();
xiaoshou = 0;
tuikuan = 0;
coName = drTable2[3].ToString();
huikuan =Convert.ToSingle(drTable2[1].ToString());
xiaoshouJe = 0;
tuikuanJe = 0;
huikuanJe =Convert.ToSingle(drTable2[4].ToString());
hwgg = drTable2["hwgg"].ToString();
fillTableCol(month.ToString(), product, xiaoshou, tuikuan,
coName, huikuan, xiaoshouJe, tuikuanJe, huikuanJe, hwgg);
}
}
try
{
......
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
}