I have error, i want to do a filter, which consist some combobox and datetimepicker and it’s will be show in dategridview. And when i want select date from datebase, i have this error:
“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();
Advertisement
Answer
string strSql1 =
Better:
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(); } }
If that doesn’t work, then please tell us what the values for param1, param2, date1, and date2 are when they enter the method. “Select * from GGG where device_id LIKE ‘%” + metroComboBox1.Text + “%’ AND parameter_id LIKE ‘%” + metroComboBox3.Text + “%’ AND time_id Between #”+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+"#"