2011-08-01 29 views
2

在使用中獲得此代碼更新日期時間的Fileds PARAMS訪問如何運行查詢使用參數

SQL = "update ConfTbl set D_from = @MyFrom , D_to = @MyTo where Code = " + Convert.ToInt32(TmpCode1) + ""; 
OleDbCommand Cmd = Conn.CreateCommand(); 
OleDbParameter dateparam1 = Cmd.Parameters.AddWithValue("@MyFrom", DbType.DateTime); 
dateparam1.Value = dt_From.Value; 
OleDbParameter dateparam2 = Cmd.Parameters.AddWithValue("@MyTo", DbType.DateTime); 
dateparam2.Value = dt_To.Value; 
Cmd.CommandText = SQL; 
Cmd.ExecuteNonQuery(); 

如何改變這種對運行查詢兩個日期之間找到?

財產以後這樣的:select * from ConfTbl where Tdate >= #MyFrom# and Tdate <= #MyTo#

我試試這個:

SQL = @"select * from ReturnConfTbl where Tdate >= @MyFrom and Tdate <= @MyTo"; 
     OleDbCommand Cmd = Conn.CreateCommand(); 
     OleDbParameter dateparam1 = Cmd.Parameters.AddWithValue("@MyFrom", DbType.DateTime); 
     dateparam1.Value = dt_from_A.Value; 
     OleDbParameter dateparam2 = Cmd.Parameters.AddWithValue("@MyTo", DbType.DateTime); 
     dateparam2.Value = dt_to_A.Value; 
     Cmd.CommandText = SQL; 
     Cmd.ExecuteNonQuery(); 
     adp = new OleDbDataAdapter(SQL, Conn); 
     adp.Fill(dsView, "ReturnConfTbl"); 
     adp.Dispose(); 
     this.dataGridView3.DataSource = dsView.Tables[0].DefaultView; 

,並得到這個錯誤:Data type mismatch in criteria expression

+0

這是一個非常直接的變化。你能提供一些你沒有用過的代碼嗎? –

+0

是否因爲你的參數是DBNull.Value? – hoodaticus

回答

3

您可以使用BETWEEN關鍵字。例如

SELECT * 
FROM ConfTbl 
WHERE 
    Tdate BETWEEN #MyFrom# AND #MyTo# 
+0

感謝您的幫助,以及如何使用此查詢編寫C#代碼? – Gali

+0

@Gali只需將這個查詢插入到您的命令對象中,並添加上面的日期。 –

+0

謝謝,看我的編輯 – Gali