将销售表中的数据在listBox中显示,代码如下,不知道错在那里,请路过的朋友指点!
private void W_jiaoban_Load(object sender, System.EventArgs e)
{
string sqlstr = "Select * From POS_销售表 where 代码 = ' " + ReturnMain.Dm
+ " ' And 小计 = ' " + ReturnMain.xiaoji + " ' ";
System.Data.OleDb.OleDbConnection ConnectObject = SmartPublic.OleDbConnect.HostConnect();
//返回数据连接ConnectObject
System.Data.DataTable tempTable = SmartPublic.DataClass.Get_DataTable(sqlstr ,ConnectObject);
//得到临时表tempTable
decimal total = 0;//定义变量并赋值为0
for(int i=0;i < tempTable.Rows.Count;i++)//得到表中的总行数
{
decimal TempDecimal = 0;
try
{
TempDecimal = Convert.ToDecimal(tempTable.Rows[i][ "小计 "].ToString());
tempTable.Rows[i][ "小计 "].ToString();
//将表中小计一列的数值转变为数据值型的
}
catch
{
TempDecimal = 0;
}
total = total +TempDecimal;//得到所有小计列的值
}
listBox1.Items.Add(total).ToString();
//将得到的小计列值的总和附给本窗口的listBox1列表框,并在listBox1中显示出来
}
请路过的朋友们指点一下错在那里,窗口中只有一个listBox1列表,我主要想在调用窗口时显示出数据
------解决方案--------------------为什么不在sql里直接得到总和呢
string sqlstr = "Select sum(小计) From POS_销售表 where 代码 = ' " + ReturnMain.Dm
+ " ' And 小计 = ' " + ReturnMain.xiaoji + " ' ";
---------------------------------------
现在是什么情况,listBox1是否显示数据了
断点看下sqlstr 的最后结果是什么,在查询分析器里执行一下,看是否能正确执行
再断点看下tempTable 是否得到数据了
这行代码没有意义,可以去掉
tempTable.Rows[i][ "小计 "].ToString();
这个加ToString()也没必要
listBox1.Items.Add(total).ToString();
--->
listBox1.Items.Add(total);
------解决方案--------------------listBox1.Items.Add(total).ToString();
====正确的=====
listBox1.Items.Add(total.ToString());
------解决方案--------------------把上面的删了,不小心给发出去了。
一般都是在SQL中 select sum(xx) as 小计 from table where ....
然后 listBox1.Items.Add(tempTable.Rows[0][ "小计 "].ToString());
如果需要小计多个就 select sum(xx) as 小计 from table group by xxx
然后
foreach(DataRow dr in tempTable.Rows)
{
listBox1.Items.Add(dr[ "小计 "].ToString());
}
------解决方案--------------------string sqlstr = "Select Sum(小计) From POS_销售表 where 代码 = ' " + ReturnMain.Dm
+ " ' And 小计 = ' " + ReturnMain.xiaoji + " ' ";
System.Data.OleDb.OleDbConnection ConnectObject = SmartPublic.OleDbConnect.HostConnect();
System.Data.DataTable tempTable = SmartPublic.DataClass.Get_DataTable(sqlstr ,ConnectObject);
if(tempTable.Rows.Count> 0)
listBox1.Items.Add(tempTable.Rows[0][0]);
------解决方案--------------------顶下^^^^
------解决方案--------------------首先看看tempTable 是否为NULL
如果为NULL或者Rows.Count = 0,那说明你数据库根本没有符合条件的记录
decimal TempDecimal = 0;
try
{
TempDecimal = Convert.ToDecimal(tempTable.Rows[i][ "小计 "].ToString());
tempTable.Rows[i][ "小计 "].ToString();