2017-02-20 70 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 –