标准表达式中的MS访问数据类型不匹配

本文关键字:访问 数据类型 不匹配 MS 表达式 标准 | 更新日期: 2023-09-27 18:06:06

我有错误,我想做一个过滤器,其中包括一些组合框和日期时间选择器,它将显示在dategridview。当我想从数据库中选择日期时,我有这个错误:

"数据类型在标准表达式中不匹配".

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();

标准表达式中的MS访问数据类型不匹配

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。文本+"%"和参数_id LIKE"%"+ metroComboBox3。之间的文本+"%"和time_id # + date1 + #和# #"+ 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+"#"