Wendelius
Как уже отмечалось, параметризация является ключом к правильной работе запроса. Это не только помогает предотвратить SQL-инъекции, но и помогает с возможными проблемами преобразования. Например, рассмотрим, отличается ли локализация дат.
Еще одна проблема - отсутствие использования блоков. Они должны использоваться для обеспечения правильного расположения таких объектов, как OleDbConnection и OleDbDataAdapter. Обратите внимание, что вы дважды инициализировали адаптер данных
Кроме того, было бы проще, если бы оба конца диапазона дат были включены в условие.
Таким образом, код должен выглядеть примерно так
DataSet dsa = new DataSet();
DataTable dt = new DataTable();
dsa.Tables.Add(dt);
string sqlQuery =
using OleDbconnection connection = new OleDbConnection(...))
using (OleDbCommand command = new OleDbCommand ()) {
command.Connection = connection;
command.CommandText = @"SELECT [Employee Name],[Column1],[column2],[column3],[Flavours],[Date]
FROM [Total]
WHERE [Employee Name] = @name AND [Date] BETWEEN @start AND @end";
command.Parameter.Add("@name", OleDbType.VarChar, 100).Value = employeedata;
command.Parameter.Add("@start", OleDbType.Date).Value = DateTime.Parse(dateTimePicker1.Text).Date;
command.Parameter.Add("@end", OleDbType.Date).Value = DateTime.Parse(dateTimePicker2.Text).Date;
using (OleDbDataAdapter da = new OleDbDataAdapter(sqlQuery, connection)) {
da.Fill(dt);
}
}
connection.Close();
}
dataGridView1.DataSource = dt;
Код может содержать ошибки, это просто пример.
Другие заметки:
- В вашем исходном коде вы, кажется, используете значение из dateTimePicker1 как для начального, так и для конечного лимитов в вашем запросе. В этом примере я использовал dateTimePicker1 и dateTimePicker2
- Используйте значимые имена для переменных и объектов. Это значительно облегчает отладку и поддержку кода. Например, вместо того, чтобы dateTimePicker1 использовать StartDatePicker или что-то подобное
- особенно используйте осмысленные имена в объектах базы данных. Наличие таких имен столбцов, как Column1 или Column2, действительно затрудняет понимание запросов и обеспечение правильного использования правильных полей.