Member 14630006 Ответов: 2

Как выполнить поиск между 2 датами в access database vs?


Я использовал параметры, но он не работает, он показывает ошибку на
da.Fill(ds);
= Несоответствие типов данных в выражении критериев. как это решить я действительно ищу везде, но не нашел ничего похожего на это любая помощь с этим?

Что я уже пробовал:

string ccc = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ahmed\OneDrive\Documents\shop.accdb";

using (OleDbConnection conn = new OleDbConnection(ccc))
            {
string query = "select * from tbl3 where datetime between @ddlStates and @ddlStates2";
using (OleDbCommand myCommand = new OleDbCommand(query, conn))
                {

              myCommand.Parameters.AddWithValue("@ddlStates", dateTimePicker1.Value);
              myCommand.Parameters.AddWithValue("@ddlStates2", dateTimePicker2.Value);
                    conn.Open();

                    using (OleDbDataAdapter da = new OleDbDataAdapter(myCommand))
                    {
                   DataSet ds = new DataSet();
                        da.Fill(ds);
                        dataGridView1.DataSource = ds;

                    }
                }

            }

2 Ответов

Рейтинг:
6

Slacker007

выберите * из tbl3, где datetime >= @ddlStates и datetime <= @ddlStates2

between не всегда дает вам те результаты, которые вы ищете

Кроме того, я думаю, что вы должны попробовать dateTimePicker1.Text вместо Value (который обычно является индексом, а не фактической датой)

и то, что Грифф сказал ниже, убедитесь, что у вас есть типы данных, правильные для значения ddl/текста, который вы отправляете.


Member 14630006

спасибо, это сработало

Рейтинг:
0

OriginalGriff

Две возможности:
1) Не используйте ключевые слова в качестве имен столбцов: DATETIME-это тип данных SQL, так что это может не помочь. Вы можете использовать их, но вам нужно "экранировать" все имя столбца:

... WHERE [datetime] BETWEEN ...
Но... это считается "плохой практикой". Вместо этого используйте имя, описывающее значения в столбце, а не их тип данных: "EnterDate", "BirthDate", "ExpiryDate" или аналогичный.

2) Проверьте тип данных столбца: если вы храните информацию на основе даты в текстовых столбцах, это также может вызвать проблемы, когда система пытается преобразовать их в DateTime для сравнения. Всегда храните значения в наиболее подходящем типе данных, а не в строках, основанных только "потому что это легче кодировать" - это всегда вызывает проблемы позже, когда их гораздо труднее исправить.