日期:2014-05-19  浏览次数:20834 次

将销售表中的数据在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();