Member 13703034 Ответов: 1

Используйте дату до и от для создания отчета


Дорогие все,

я делаю userform в C# и с помощью базы данных MS access я хочу знать, как можно добавить параметр даты в просмотрщик отчетов для создания отчета от и до даты plz помогите мне....................................................................................................

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

visual studio 2010................................................................................................................

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Какой код вы пробовали?
Где ты застрял?
Какая помощь вам нужна?
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

1 Ответов

Рейтинг:
0

RDBurmon

Вам не нужно передавать параметры даты в Средство просмотра отчетов , вместо этого используйте эти параметры в качестве фильтра в своем SQL-запросе, чтобы отфильтровать дату, а затем заполнить таблицу данных для этого вывода
наконец прикрепите эту таблицу данных в качестве источника данных к средству просмотра отчетов

вот пример кода, который я попробовал
Date1 и Date2 являются объектами параметров (текстовое поле или объекты календаря в форме)

private void Form1_Load(object sender, EventArgs e)
{
    Customers dsCustomers = GetData();
    ReportDataSource datasource = new ReportDataSource("Customers", dsCustomers.Tables[0]);
    this.reportViewer1.LocalReport.DataSources.Clear();
    this.reportViewer1.LocalReport.DataSources.Add(datasource);
    this.reportViewer1.RefreshReport();
}
 
private Customers GetData()
{
    string constr = @"Data Source=.\Sql2005;Initial Catalog=Northwind;Integrated Security = true";
    using (SqlConnection con = new SqlConnection(constr))
    {
        // NO! Bad idea. Google "SQL Injection".
        // using (SqlCommand cmd = new SqlCommand("SELECT TOP 20 * FROM customers where Transdate between" & Date1.value & " AND " & Date2.value))
       
        using (SqlCommand cmd = new SqlCommand("SELECT TOP 20 * FROM customers where Transdate between @Date1 AND @Date2"))
        {
            cmd.Parameters.AddWithValue("@Date1", Date1.Value);
            cmd.Parameters.AddWithValue("@Date2", Date2.Value);
            
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (Customers dsCustomers = new Customers())
                {
                    sda.Fill(dsCustomers, "DataTable1");
                    return dsCustomers;
                }
            }
        }
    }
}


CHill60

Не используйте конкатенацию строк для формирования SQL-запросов! Вместо этого используйте параметризованные запросы. Это также поможет вам с недостающими одинарными кавычками в вашем запросе.

RDBurmon

согласитесь, это предотвратит SQL-инъекцию

Richard Deeming

Он также исправит синтаксическую ошибку, которая в данный момент присутствует в вашем запросе. :)

(Также неверная попытка использовать VB.NET синтаксис в C#.)

Я исправил ваш код для вас.

RDBurmon

Спасибо