2017-02-20 61 views
0

我使用这个代码将数据插入到一个Access数据库文件查询列的确切日期C#

decimal quantity; 
     if (!Decimal.TryParse(textBox9.Text, out quantity)) 
      MessageBox.Show("Invalid number"); 
     else 
     { 

      using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data source=|DataDirectory|\\crepeDB.accdb;")) 
      { 
       conn.Open(); 
       string query = @"insert into Sales (Sdate,SQuantity) 
        values (@date, @qta)"; 
       System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(query, conn); 
       cmd.Parameters.Add("@date", OleDbType.Date).Value = dateTimePicker1.Value; 
       cmd.Parameters.Add("@qta", OleDbType.Decimal).Value = quantity; 
       cmd.ExecuteNonQuery(); 
      } 
     } 

现在,我想今天的总SQuantity期间的总和,所以我用这个代码,但它不断给我的错误

public void Calculate() 
    { 

      using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data source=|DataDirectory|\\crepeDB.accdb;")) 
     { 
       conn.Open(); 
       string query = @"select SQuantity SUM(SQuantity) AS 'Total' From Sales where Sdate = '"+ dateTimePicker1.Value +"'"; 
       System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(query, conn); 
       cmd.ExecuteNonQuery(); 
      textBox1.Text = cmd.ExecuteScalar().ToString(); 

     } 

    } 

    private void frmShiftEnd_Load(object sender, EventArgs e) 
    { 
     Calculate(); 
    } 
+0

什么错误? http://stackoverflow.com/help/how-to-ask – user5226582

+0

我相信你必须从选择中的查询中取出SQuantity。应该选择SUM(SQuantity)AS'Total'... –

+1

您试图在'Calculate()'方法中将日期作为字符串。为什么不像你在插入中那样使用日期参数?你已经知道这是有效的。 –

回答

1

试试这个:

string query = @"select SUM(SQuantity) AS 'Total' From Sales where Sdate = @datetime"; 
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(query, conn); 
cmd.Parameters.Add("@datetime", OleDbType.Date).Value = dateTimePicker1.Value; 

我删除德SQuantity和附加值为PARAM ETERS。不要直接将你的字段的值用于你的sql文本。它可能会导致你有安全事件。

+0

感谢队友的回复,好吧,现在不会给我错误,但返回空值,我也想知道,在查看访问文件时,我注意到插入了完整的日期,包括时间为“2/21/2017 2:58:34 AM“,这可能是它返回空的原因吗?因为它使用时间搜索? –

+0

是的,它可以...如果你只想按日期搜索,然后删除搜索时间...该工作 – NicoRiff

+0

感谢您的答复,尼科,但我该怎么做?我怎样才能让它自动插入只有日期而没有时间和搜索日期?我试图在用户点击Shift End按钮时自动显示每日SQuantity –