Показать результаты в Datagridview на основе значения DateTimePicker - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь, чтобы это представление данных отображало только те записи дат, которые были выбраны пользователем с помощью datetimepicker

вот мой оригинальный код без указателя даты и времени

    private void frmSaleReport_Load(object sender, EventArgs e)
{
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;User Id=;Password=;Data Source=TS-POS.accdb");
    conn.Open();
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT InvoiceNo, DayDate, Gross, Net, Staff FROM GrossSales ORDER BY DayDate;", conn);
    DataSet ds = new DataSet();
    dataAdapter.Fill(ds);
    dataGridView2.DataSource = ds.Tables[0];
    dataGridView2.Columns["InvoiceNo"].HeaderText = "رقم الفاتورة";
    dataGridView2.Columns["InvoiceNo"].Width = 150;
    dataGridView2.Columns["DayDate"].HeaderText = " التاريخ";
    dataGridView2.Columns["DayDate"].Width = 350;
    dataGridView2.Columns["Gross"].HeaderText = "الإجمالي";
    dataGridView2.Columns["Gross"].Width = 150;
    dataGridView2.Columns["Net"].HeaderText = " الصافي";
    dataGridView2.Columns["Net"].Width = 150;
    dataGridView2.Columns["Staff"].HeaderText = " الموظف";
    dataGridView2.Columns["Staff"].Width = 150;
    conn.Close();
    GrandTotal();
    Qty();
}
private void Qty()
{
    int sum = 0;
    for (int i = 0; i < dataGridView2.Rows.Count; ++i)
    {
        sum += Convert.ToInt32(dataGridView2.Rows[i].Cells[0].Value);
    }
    textBox1.Text = sum.ToString();
}
private void GrandTotal()
{
    int sum2 = 0;
    for (int i = 0; i < dataGridView2.Rows.Count; ++i)
    {
        sum2 += Convert.ToInt32(dataGridView2.Rows[i].Cells[4].Value);
    }
    textBox3.Text = sum2.ToString();
}

Теперь, если япопробуйте добавить оператор where, он начинает выдавать ошибку в режиме отладки о несоответствии типов данных, как я могу заставить это работать?

вот ссылка, которую я использую для datetimepicker

    OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT InvoiceNo, DayDate, Gross, Net, Staff FROM GrossSales Where DayDate = '"dateFrom.Value"'ORDER BY DayDate;", conn);

1 Ответ

0 голосов
/ 19 мая 2018

Вам необходимо правильное форматирование при объединении выражения значения даты:

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT InvoiceNo, DayDate, Gross, Net, Staff FROM GrossSales Where DayDate = #" + dateFrom.Value.ToString("yyyy'/'MM'/'dd") + "#;", conn);

Редактировать: Чтобы удалить часть времени:

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT InvoiceNo, DayDate, Gross, Net, Staff FROM GrossSales Where Fix(DayDate) = #" + dateFrom.Value.ToString("yyyy'/'MM'/'dd") + "#;", conn);

или:

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT InvoiceNo, DayDate, Gross, Net, Staff FROM GrossSales Where DayDate >= #" + dateFrom.Value.ToString("yyyy'/'MM'/'dd") + "# And DayDate < #" + dateFrom.Value.AddDays(1).ToString("yyyy'/'MM'/'dd") + "#;", conn);
...