Оператор SQL в MS Access с параметрами типа date - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть оператор SQL для запросов в MS Access. Я хочу получить результат сделки между датами.

Это мой код:

 DateTime pFromNew = Convert.ToDateTime(this.dateTimePicker1.Value.ToString("yyyy-MM-dd"));
 DateTime pToNew = Convert.ToDateTime(this.dateTimePicker2.Value.ToString("yyyy-MM-dd"));

 string pFrom = "#" + pFromNew.ToString() + "#";
 string pTo = "#" + pToNew.ToString() + "#";

 chrTrans.Series["Class"].Points.Clear();

 oconn.Open();

 OleDbCommand cmd = oconn.CreateCommand();
 cmd.CommandType = CommandType.Text;

 cmd.CommandText = "Select ClassType,Nametree,TransWeight,Valuedate  from tblTrans where Nametree = '" + this.cboNametree.Text.Trim() + "' and valuedate between '" + pFrom + "' and '" + pTo + "'";
 //+ "' and valuedate between '"+ this.dateTimePicker1.Text +"' and '"+ this.dateTimePicker2.Text +"'";

 cmd.ExecuteNonQuery();

Что не так с этим утверждением?

Я всегда получаю эту ошибку:

DATA Несоответствие типов в выражении критериев.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы делаете это слишком сложным, конвертируя туда-сюда три раза.

Может быть уменьшено до:

string pFrom = "#" + this.dateTimePicker1.Value.ToString("yyyy'/'MM'/'dd") + "#";
string pTo = "#" + this.dateTimePicker2.Value.ToString("yyyy'/'MM'/'dd") + "#";

// snip

cmd.CommandText = "Select ClassType,Nametree,TransWeight,Valuedate from tblTrans where Nametree = '" + this.cboNametree.Text.Trim() + "' and valuedate between " + pFrom + " and " + pTo + "";
0 голосов
/ 28 апреля 2018

Удалите одиночные кавычки, которые есть в вашей строке ... Я покажу вам ...

Эта строка:

cmd.CommandText = "Select ClassType,Nametree,TransWeight,Valuedate  from tblTrans where Nametree = '" + this.cboNametree.Text.Trim() + "' and valuedate between '" + pFrom + "' and '" + pTo + "'";

Должно быть:

cmd.CommandText = "Select ClassType,Nametree,TransWeight,Valuedate  from tblTrans where Nametree = '" + this.cboNametree.Text.Trim() + "' and valuedate between " + pFrom + " and " + pTo;

Причина в том, что вы уже объединили символ # вокруг строк с датой - и поэтому одиночная кавычка не нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...