Как создать динамический запрос в локальном отчете (.rdlc) в C#
В моем приложении у меня есть 3 файла report.rdlc, записи которых не отличаются. Я создаю запрос в форме с кнопками параметров, флажками и значениями комбинированного списка.
string qry = "";
SqlCeConnection cnn = new
SqlCeConnection(Properties.Settings.Default.ConnectionString.ToString());
SqlCeCommand cmd = new SqlCeCommand();
if (radioButton1.Checked == true)
{
qry = @"Select Did,Cid,Source,Destination,Sid,cost,sdate,Driver.fname+' '+Driver.lname as driver,payed from Service,Driver where Service.Did=Driver.id";
}
else if (radioButton2.Checked == true)
{
button3.Enabled = true;
qry = @"Select Did,Cid,Source,Destination,Sid,cost,sdate,Driver.fname+' '+Driver.lname as driver,payed from Service,Driver where Service.Did=Driver.id and Did=@param ";
cmd.Parameters.Add("@param", CmbDriver.SelectedValue);
}
if (payedRB.Checked == true)
{
qry += @" and Service.payed=1";
}
else if (notpayedRB.Checked == true)
{
qry += @" and Service.payed=0";
}
if (txtDate1.Text != "" && txtDate2.Text != "")
{
qry += @" and Service.sdate between @pdate1 AND @pdate2";
cmd.Parameters.Add("@pdate1", SqlDbType.NVarChar, 20).Value = txtDate1.Text.Trim();
cmd.Parameters.Add("@pdate2", SqlDbType.NVarChar, 20).Value = txtDate2.Text.Trim();
state = 3;
}
else if (txtDate1.Text != "")
{
qry += @" and Service.sdate >= @pdate1";
cmd.Parameters.Add("@pdate1", SqlDbType.NVarChar, 20).Value = txtDate1.Text.Trim();
state = 1;
}
else if (txtDate2.Text != "")
{
qry += @" and Service.sdate <= @pdate2";
cmd.Parameters.Add("@pdate2", SqlDbType.NVarChar, 20).Value = txtDate2.Text.Trim();
state = 2;
}
if (activdr.Checked == true)
{
qry += @" and Driver.isActive=1";
}
else
{
qry += @" and Driver.isActive=0";
}
qry += @" ORDER BY Service.sdate desc,Service.Sid desc";
cmd.Connection = cnn;
cmd.CommandText = qry;
SqlCeDataAdapter adapter = new SqlCeDataAdapter(cmd);
cnn.Open();
adapter.Fill(dt);......
Я использовал переменную reporttype в событии кнопок выбора, чтобы узнать, какой отчет будет отображаться в средстве просмотра отчетов. и установить выбранные записи для просмотра сетки данных
мои отчеты получают данные из временной таблицы, совместимой с полем записи. перед этим я вставляю все записи (которые будут напечатаны в программе просмотра отчетов) во временную таблицу;
Как я могу перенести записи в отчеты без временной таблицы;
1 ответ
В локальных отчетах невозможно, чтобы сам отчет запрашивал базу данных. Ваше приложение должно запросить базу данных и передать результаты в отчет в качестве источника данных.
Вам необходимо заполнить набор данных сейчас и передать его как DataSource
к отчету. В отчете должен быть указан соответствующий источник данных для предоставления значений для полей.