public static DataTable GetDataTable(Action action, Param[] parameters = null) { // Заполняем команду названием процедуры из листа и параметрами var command = new FunctionCommand(action.FunctionName, parameters); // Передаем все в каллер и результат работы возвращаем var caller = new DbCaller(command); caller.DoWork(); return((DataTable)caller.GetResult()); }
public static DataTable GetDataTable(string sheet, Param[] parameters = null) { // Получаем лист Sheet currentSheet = Options.Sheets[sheet]; // Заполняем команду названием процедуры из листа и параметрами var command = new FunctionCommand(currentSheet.Procedure, parameters); // Передаем все в каллер и результат работы возвращаем var caller = new DbCaller(command); caller.DoWork(); return((DataTable)caller.GetResult()); }
public static FileStreamResult GetXlsxFile(Action action, Param[] parameters = null) { // Заполняем команду названием процедуры из листа и параметрами var command = new FunctionCommand(action.FunctionName, parameters); // Создаем воркер, даем ему имя из листа var worker = new ExcelWorker(action.NameRus); // Передаем все в каллер и результат работы возвращаем var caller = new DbCaller(command, worker); caller.DoWork(); return(DownloadXlsxFile((MemoryStream)caller.GetResult(), action.NameRus)); }
/// <summary> /// Производит действия по извлечению данных из БД и размещению их в Excel. Далее автоматически отдает на загрузку, если помещен после return /// </summary> /// <param name="sheet">Название листа</param> /// <param name="parameters">Параметр(ы)</param> public static FileStreamResult GetXlsxFile(string sheet, Param[] parameters = null) { // Получаем лист Sheet currentSheet = Options.Sheets[sheet]; // Заполняем команду названием процедуры из листа и параметрами var command = new FunctionCommand(currentSheet.Procedure, parameters); // Создаем воркер, даем ему имя из листа var worker = new ExcelWorker(currentSheet.Description); // Передаем все в каллер и результат работы возвращаем var caller = new DbCaller(command, worker); caller.DoWork(); return(DownloadXlsxFile((MemoryStream)caller.GetResult(), currentSheet.Description)); }
// Универсальный класс для заполнения списков опций. //<T> - Обобщение, where T : OptionList, new() - так T гарантирует, что будет иметь конструктор без параметров и будет наследоваться от OptionList. // Благодаря этому мы сможем создать новые экземпляры напрямую из этого метода. static void UpdateOptions <T> (string SqlString, ref List <T> list) where T : IOptionList, new() { //Очищаем массив if (list is null) { list = new List <T>(); } else { list.Clear(); } // Вносим в команду запрос для заполнения массива, возвращать будем таблицу var command = new TextCommand(SqlString, Returns.Table); var caller = new DbCaller(command, null, "Oracle"); caller.DoWork(); // Возвращаем результат каллера в виде датасета var dt = (DataTable)caller.GetResult(); // Проходим по строчкам и вносим данные в массив foreach (DataRow row in dt.Rows) { // Создаем массив с размерностью строки object[] dsRow = new object[dt.Columns.Count]; // Заполняем его согласно данным со столбцов for (int i = 0; i < dt.Columns.Count; i++) { dsRow[i] = row.ItemArray[i]; } // Создаем экземпляр обобщенного класса var newElem = new T(); // Вносим в него данные, передав ему свежесозданный массив объектов newElem.CreateFromArray(dsRow); // Вносим экзепляр в целевой массив list.Add(newElem); } }