2016-09-06 7 views
-1

エラーがあります。コンボボックスとdatetimepickerで構成されているフィルターを実行したいのですが、dategridviewに表示されます。そして、私はdatebaseから選択日付をするとき、私はこのエラーを持っている:MSアクセス条件式のデータ型が一致していません。C#

"Data type mismatch in criteria expression".

string strSql1 = @"Select * from GGG where 
        device_id LIKE '%" + metroComboBox1.Text + "%' 
        AND parameter_id LIKE '%" + metroComboBox3.Text + "%' 
        AND time_id Between 'date1' AND 'date2'";` 

string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Ирина\\Desktop\\Visual Studio 2013\\Projects\\WindowsFormsApplication1\\WindowsFormsApplication1\\BD3.accdb;Persist Security Info=False"; 

string date1 = metroDateTime1.Value.ToString("MM/dd/yyyy H:mm:ss", CultureInfo.InvariantCulture).Replace('.', '/'); 
string date2 = metroDateTime3.Value.ToString("MM/dd/yyyy H:mm:ss", CultureInfo.InvariantCulture).Replace('.', '/'); 

//string strSql = ("SELECT * FROM GGG where device_id LIKE '%" + metroComboBox1.Text + "%' AND parameter_id LIKE '%" + metroComboBox3.Text + "%' "); 
string strSql1 = "Select * from table1 where device_id LIKE '%" + metroComboBox1.Text + "%' AND parameter_id LIKE '%" + metroComboBox3.Text + "%' AND time_id Between 'date1' AND 'date2'"; 

//string strSql = "SELECT event_id, device_id, parameter_id, parameter_int_id, time_id, user_id FROM table1 where time_id between #" + metroDateTime1.Value.ToString("yyyy'/'MM'/'dd") + "# AND #" + metroDateTime3.Value.ToString("yyyy'/'MM'/'dd") + "" "# AND #" device_id LIKE '%" + comboBox2.Text + "%' "# AND #" parameter_id LIKE '%" + comboBox3.Text + "%' "); 
//string strSql = "SELECT event_id, device_id, parameter_id, date_id, time_id, user_id FROM GGG where device_id like '%" + metroComboBox1.Text + "%' AND parameter_id LIKE '%" + metroComboBox3.Text + "%' "; 



OleDbConnection con = new OleDbConnection(constr); 
OleDbCommand cmd = new OleDbCommand(strSql1, con); 
con.Open(); 
cmd.CommandType = CommandType.Text; 
OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
DataTable GGG = new DataTable(); 
da.Fill(GGG); 
metroGrid1.DataSource = GGG; 
con.Close(); 

答えて

1
string strSql1 = 

ベター:

performSelect(metroComboBox1.Text, metroComboBox3.Text, date1, date2); 
private void performSelect(string param1, string param2, DateTime Date1,DateTime Date2){ 
using(OleDbCommand com = Conn.CreateCommand()){ 
    com.CommandText = "select * from GGG where device like %@mcb1% and parameter like %@mcb3% and time between @date1 and @date2"; 
    com.Parameters.AddWithValue("@mcb1",param1); 
    com.Parameters.AddWithValue("@mcb3",param2); 
    com.Parameters.AddWithValue("@date1",Date1); 
    com.Parameters.AddWithValue("@date2",Date2); 
    com.ExecuteReader(); 
} 
} 

問題が解決しない場合は、どのような値を教​​えてくださいparam1、param2、date1、およびdate2は、メソッドに入るときです。"* GGGから選択*ここでdevice_id LIKE '%" + metroComboBox1.Text + "%" AND parameter_id LIKE'% "+ metroComboBox3.Text +"% "AND time_id#" + date1 + "#AND#" + date2 + "# ";

"Select * from GGG where device_id LIKE '%" + metroComboBox1.Text + "%' AND parameter_id LIKE '%" + metroComboBox3.Text + "%' AND time_id Between #"+date1+"# AND #"+date2+"# AND clock_id between #"+date3+"# and #"+date4+"#" 
+0

、同じエラー –

+0

が、私の接続のOleDbCommand(MSアクセス)ではなく、SQL –

+0

申し訳ありませんが動作しません - 習慣を。私は私の答えを変更しました –

関連する問題