Сравните значение даты, полученное из TextBox в форме Windows, со значением даты, хранящимся в листе Excel - PullRequest
0 голосов
/ 15 декабря 2010

Я пытаюсь сопоставить дату между значением подтверждения в текстовом поле и типом даты в Excel. Проблема в том, что прямое сравнение строк не работает. Мне нужно выбрать только те строки из файла Excel, где дата меньше даты, указанной в текстовых окнах форм Windows. Любая помощь будет принята с благодарностью. Мой фрагмент кода:

string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\empdetails.xls;Extended Properties=ImportMixedTypes=Text;Excel 8.0;HDR=Yes;IMEX=1;";

OleDbDataAdapter adap = new OleDbDataAdapter("Select * from [Sheet1$] where Date < "+ txtDate.Text + "", connStr);

DataTable viewemployees= new DataTable();

adap.Fill(viewemployees);

dataGridView1.DataSource=viewemployees;

Date - именованный столбец, принимающий значения типа даты в Excel. Формат: мм / дд / гггг.

txtDate - это текстовое поле, принимающее значения того же формата даты.

Как использовать формулы в запросе к Excel? Не уверен насчет этого, но я думаю, что DateValue может вам здесь помочь?

Ответы [ 2 ]

1 голос
/ 26 января 2011

У вас была проблема, похожая на вашу, я смог решить ее с помощью этих Несоответствия типов данных в выражении критериев |Access, OleDb, C # ответы.

В краткосрочной перспективе вам нужно просто сделать это:

String sql = "select * from [Tabelle1$] WHERE blahblah "' AND (StartDate <= @curDate AND EndDate >= @curDate)";
OleDbCommand olDbCmd = new OleDbCommand(sql, con);
OleDbParameter curDate = new OleDbParameter("curDate", DateTime.Now);
curDate.DbType = DbType.DateTime;
olDbCmd.Parameters.Add(curDate);
OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(olDbCmd);

Это должно устранить несоответствия типов ...

0 голосов
/ 15 декабря 2010

Я считаю, что вам нужно использовать sql для сравнения обеих дат.

И я думаю, что вы опустили цитату для даты, которую вы получили из текстового поля.

см. Слегка измененную версию вашего кода ниже.

string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sample.xls;Extended Properties=ImportMixedTypes=Text;Excel 8.0;HDR=Yes;IMEX=1;";

OleDbDataAdapter adap = new OleDbDataAdapter("Select * from [Sheet1$] where Date < '"+txtDate.Text+"'", connStr);

DataTable viewemployees= new DataTable();

adap.Fill(viewemployees);

dataGridView1.DataSource=viewemployees;

Надеюсь, это поможет.

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