using System.Data;
namespace FastReport.Data
{
///
/// Datasource for stored procedure.
///
public partial class ProcedureDataSource : TableDataSource
{
internal string DisplayNameWithParams
{
get
{
if (Parameters != null)
{
string paramsStr = "";
foreach (CommandParameter parameter in Parameters)
{
if (parameter.Direction == ParameterDirection.Input || parameter.Direction == ParameterDirection.InputOutput)
paramsStr += parameter.Name + ", ";
}
if (paramsStr.EndsWith(", "))
paramsStr = paramsStr.Substring(0, paramsStr.Length - 2);
if (paramsStr != "")
return Name + " (" + paramsStr + ")";
}
return Name;
}
}
///
public override void InitSchema()
{
base.InitSchema();
if (Parameters != null)
{
foreach (CommandParameter parameter in Parameters)
{
if (parameter.Direction == ParameterDirection.Input)
continue;
var column = Columns.FindByName(parameter.Name);
if (column == null)
{
column = new Column
{
Name = parameter.Name,
DataType = typeof(Variant)
};
Columns.Add(column);
}
column.Tag = parameter;
}
}
}
///
protected override object GetValue(Column column)
{
if (column.Tag is CommandParameter parameter)
{
return parameter.Value;
}
return base.GetValue(column);
}
}
}