DataGridview查询结果为0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataGridview查询结果为0相关的知识,希望对你有一定的参考价值。
有谁知道为什么我在datagridview中抛出零,而我的整个查询代码是正确的..这是我的代码如下..
boAPI4.Login login = new boAPI4.Login();
string cS = login.GetConnectionString();
DataAccess dA = new DataAccess(cS);
int userID = dA.getLpeID(login.GetBoUserNr());
PRAESENZZEIT q = new PRAESENZZEIT();
q.ZPZ_LPE_ID = userID;
if (db.State == ConnectionState.Closed)
db.Open();
string query = "SELECT per.LPE_Nr, zei.ZPZ_LPE_ID, zei.ZPZ_Datum, SUM (zei.ZPZ_Std100) AS Stunden" +
" FROM DB.dbo.Z_PRAESENZZEIT zei INNER JOIN DB.dbo.A_PERSONAL per ON zei.ZPZ_LPE_ID = per.LPE_ID" +
$" WHERE zei.ZPZ_Datum BETWEEN '{dtFromDate.Value}' AND '{dtToDate.Value}' AND zei.ZPZ_LPE_ID='{userID.ToString()}' GROUP BY per.LPE_Nr, zei.ZPZ_LPE_ID, zei.ZPZ_Datum ORDER BY zei.ZPZ_Datum, per.LPE_Nr;";
pRAESENZZEITBindingSource.DataSource = db.Query<PRAESENZZEIT>(query, commandType: CommandType.Text);
这是应该在datagridview中编写的相同查询
SELECT per.LPE_Nr, zei.ZPZ_LPE_ID, zei.ZPZ_Datum, SUM (zei.ZPZ_Std100) AS Stunden FROM DB.dbo.Z_PRAESENZZEIT zei INNER JOIN DB.dbo.A_PERSONAL per ON zei.ZPZ_LPE_ID = per.LPE_ID WHERE zei.ZPZ_Datum BETWEEN '16.12.2014 13:56:00' AND '18.12.2017 15:15:17'AND zei.ZPZ_LPE_ID='196' GROUP BY per.LPE_Nr, zei.ZPZ_LPE_ID, zei.ZPZ_Datum ORDER BY zei.ZPZ_Datum, per.LPE_Nr;
类PRAESENZZEIT的定义
public class PRAESENZZEIT
{
public int LPE_Nr { get; set; }
public DateTime ZPZ_Datum { get; set; }
public double ZPZ_Std100 { get; set; }
public int ZPZ_LPE_ID { get; set; }
public DateTime ZPZ_Von { get; set; }
public DateTime ZPZ_Bis { get; set; }
public DateTime ZPZ_Std { get; set; }
public int ZPZ_ID { get; set; }
public int ZPZ_Jahr { get; set; }
public int ZPZ_Monat { get; set; }
public int ZPZ_Tag { get; set; }
public DateTime ZPZ_ERFDAT { get; set; }
public string ZPZ_ERFUSER { get; set; }
public DateTime ZPZ_MUTDAT { get; set; }
public string ZPZ_MUTUSER { get; set; }
}
答案
在不了解您的系统的情况下,我只能做出有根据的猜测,但您可能希望从此更改您的查询:
SUM (zei.ZPZ_Std100) AS Stunden
对此:
SUM (zei.ZPZ_Std100) AS ZPZ_Std100
这是因为类PRAESENZZEIT
有一个名为ZPZ_Std100
的属性,但没有一个名为“Stunden”的属性。
我希望db.Query<PRAESENZZEIT>
会进行反射以将结果集映射到属性名称,因此您需要使用列名来匹配您的属性名称。
以上是关于DataGridview查询结果为0的主要内容,如果未能解决你的问题,请参考以下文章
使用查询结果创建和绑定 DataGridViewColumn。将其添加到 DataGridView
在C#中如何实现多条件查询并将查询结果显示在datagridview中
C#中如何在文本框中输入数据然后按回车就查询数据库将结果显示在Datagridview中?
使用 DataGridView 控件和 Access 数据库查询时如何处理错误?
我用linq to sql查询,把结果显示到DataGridView中,但是我想在DataGridView中显示列的别名