Страница 1 из 1
Источник данных - хранимая процедура
Добавлено: 10 окт 2008, 09:22
hornet
Как в runtime сделать хранимую процедуру источником данных? И передать в неё входные параметры.
База данных не типизирована, СУБД MSSQL SERVER2005. Желательно пример на C#. Спасибо
Источник данных - хранимая процедура
Добавлено: 10 окт 2008, 21:44
Edward
Здравствуйте.
Код: Выделить всё
StiReport report = new StiReport();
StiSqlDatabase db = new StiSqlDatabase("MyConnection", @"Password=;Persist Security Info=False;Data Source=.\SqlExpress;Integrated Security=False;Initial Catalog=NORTHWIND;User ID=sa");
StiSqlSource mySource = new StiSqlSource("MyConnection", "MySource", "MySource", "exec CustOrderHist 'ALFKI'");
report.Dictionary.Databases.Add(db);
report.Dictionary.DataSources.Add(mySource);
report.Dictionary.Connect(false);
mySource.SynchronizeColumns();
mySource.Parameters.Add(new StiDataParameter("@CustID", "\"ALFKI\"", (int)SqlDbType.VarChar , 5));
mySource.SqlCommand = "exec CustOrderHist @CustID";
// Можно посмотреть, что получилось
report.Design();
//Присвоение параметров для шаблона отчета
//report.Dictionary.DataSources["MySource"].Parameters["@CustID"].ParameterValue = "ALFKI";
//report.Compile();
//Присвоение параметров для скомпилированного отчета:
report.Compile();
report.CompiledReport.Dictionary.DataSources["MySource"].Parameters["@CustID"].ParameterValue = "ALFKI";
report.Show();
Спасибо.
Источник данных - хранимая процедура
Добавлено: 13 окт 2008, 06:48
hornet
Здраствуйте,
Спасибо за ответ, потихоньку разобрался.. Только теперь такая проблема: пытаюсь присвоить параметры в runtime, как вы подсказали:
mySource.Parameters.Add(new StiDataParameter("@CustID","\"ALFKI\"",(int)SqlDbType.VarChar,5));
mySource.SqlCommand = "exec CustOrderHist @CustID";
Report.Dictionary.DataSources["mySource"].Parameters["@CustID"].ParameterValue = "ANATR";
MessageBox.Show(mySource.Parameters["@CustID"].ParameterValue.ToString());
Report.Design();
Report.Compile();
// MessageBox Показывает , что значение парамета @CustID = ANATR
//Смотрю в дизайнере отчёта значение параметра @CustID = "ALFKI"
Почему не меняется.. незнаю..
Заранее спасибо за ответ.....
Источник данных - хранимая процедура
Добавлено: 13 окт 2008, 07:52
hornet
Сам разобрался... Написал
Report.Dictionary.DataSources["mySource"].Parameters["@CustID"].Value = "\"ANATR\"";
вместо
Report.Dictionary.DataSources["mySource"].Parameters["@CustID"].ParametrValue = "\"ANATR\"";
Всё заработало.....
Источник данных - хранимая процедура
Добавлено: 13 окт 2008, 13:42
Edward
Да, действительно, в коде была ошибка в строке присвоения параметров:
Вот 2 варианта, которые работают:
Код: Выделить всё
//Присвоение параметров в шаблоне отчета до компиляции:
report.Dictionary.DataSources["MySource"].Parameters["@CustID"].ParameterValue = "ALFKI";
report.Compile();
report.Show();
А если присваивать параметры в скомпилированном отчете, то код должен выглядеть следующим образом:
Код: Выделить всё
report.Compile();
report.CompiledReport.Dictionary.DataSources["MySource"].Parameters["@CustID"].ParameterValue = "ALFKI";
report.Show();
Разница между ParameterValue и Value только в том, что свойство Value имеет тип string, ParameterValue - object.
Извините за ошибку.
Спасибо.