【问题标题】:DataGridview result of query 0查询 0 的 DataGridview 结果
【发布时间】:2017-12-18 15:08:09
【问题描述】:

有谁知道为什么我在 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;

PRAESENZEIT 类的定义

 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; }
}

【问题讨论】:

  • 如果你说你的代码是正确的,那么对于这种符合我们目前对物理定律的理解的行为就没有任何解释了。建议你发表。我会打电话给斯德哥尔摩,让他们把香槟冰镇一下。
  • 可能PRAESENZZEIT 没有一个名为“Stunden”的公共属性
  • 我以为我的sql查询代码在测试中是正确的,只有输出代码显示0。
  • 在执行前转储查询。也许他们不一样。
  • ToList() 您的查询结果为 tempo 变量并使用断点查看内部内容。正常调试的事情。

标签: c# mysql datagridview


【解决方案1】:

在不了解您的系统的情况下,我只能做出有根据的猜测,但您可能想从这里更改您的查询:

SUM (zei.ZPZ_Std100) AS Stunden

到这里:

SUM (zei.ZPZ_Std100) AS ZPZ_Std100

这是因为PRAESENZZEIT 类有一个名为ZPZ_Std100 的属性,但没有一个名为“Stunden”的属性。

我希望db.Query&lt;PRAESENZZEIT&gt; 会进行反射以将结果集映射到属性名称,因此您需要列名称来匹配您的属性名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多