public ActionResult RunScriptExcel(string scriptname, string parameter = null) { var model = new SqlScriptModel(CurrentDatabase); var content = CurrentDatabase.ContentOfTypeSql(scriptname); if (content == null) { return(Message("no content")); } var d = Request.QueryString.AllKeys.ToDictionary(key => key, key => Request.QueryString[key]); var p = new DynamicParameters(); foreach (var kv in d) { p.Add("@" + kv.Key, kv.Value); } string script = model.AddParametersForSql(parameter, content, p, ViewBag); if (script.StartsWith("Not Authorized")) { return(Message(script)); } using (var cn = CurrentDatabase.ReadonlyConnection()) { cn.Open(); return(cn.ExecuteReader(script, p, commandTimeout: 1200).ToExcel("RunScript.xlsx", fromSql: true)); } }
public ActionResult RunScript(string name, string parameter = null, string title = null) { var m = new SqlScriptModel(CurrentDatabase); var sql = m.FetchScript(name); if (sql == null) { return(Message("no sql script named " + name)); } if (!SqlScriptModel.CanRunScript(sql)) { return(Message("Not Authorized to run this script")); } var p = m.FetchParameters(); var pSql = m.AddParametersForSql(parameter, sql, p, ViewBag); ViewBag.Report = name; ViewBag.Name = title ?? $"{name.SpaceCamelCase()} {parameter}"; if (sql.Contains("pagebreak")) { ViewBag.report = PythonModel.PageBreakTables(CurrentDatabase, sql, p); return(View("RunScriptPageBreaks")); } ViewBag.Url = Request.Url?.PathAndQuery; string html; using (var cn = CurrentDatabase.ReadonlyConnection()) { cn.Open(); var rd = cn.ExecuteReader(sql, p, commandTimeout: 1200); ViewBag.ExcelUrl = Request.Url?.AbsoluteUri.Replace("RunScript/", "RunScriptExcel/"); html = GridResult.Table(rd, ViewBag.Name2); } return(View(new HtmlHolder { html = html })); }