Hi 各位前輩大家好
目前想寫個選取可複選下拉式選單(年月)。按下button後,去call資料庫的資料取得報表結果,目前使用ASP.NET MVC(MVC5)開發。以下問題想請教各位大神:
(1)前端的網頁是YYYYMM(年月格式),使用TagBox標籤框(有點像可複選的下拉式選單)。如果想要寫Stored Procedure去處理報表。如何克服 想複選單月、多個月(e.g. user可選202203的報表或是202203+202202的報表)的問題,以及設定SP的參數?
(2)如果想使用Dapper + Stored Procedure。如何將前端丟參數(YYYYMM) call SP呢?
前端頁面
model
public class SDDapperORM
{
private static string connectionString2 = @"Data Source =localhost; Initial Catalog=SALESDB; Integrated Security=False;User ID=帳號;Password=密碼;";
public static void ExecuteWithoutReturn2(string procedureName, DynamicParameters param = null)
{
using (SqlConnection con = new SqlConnection(connectionString2))
{ //執行stored procedure
con.Open();
con.Execute(procedureName, param, commandType: CommandType.StoredProcedure);
}
}
public static T ExecuteReturnScalar2<T>(string procedureName, DynamicParameters param = null)
{
using (SqlConnection con = new SqlConnection(connectionString2))
{
con.Open();
return (T)Convert.ChangeType(con.ExecuteScalar(procedureName, param, commandType: CommandType.StoredProcedure), typeof(T));
}
}
public static IEnumerable<T> ReturnList2<T>(string procedureName, DynamicParameters param = null)
{
using (SqlConnection con = new SqlConnection(connectionString2))
{
con.Open();
return con.Query<T>(procedureName, param, commandType: CommandType.StoredProcedure);
}
}
}
使用以下工具開發:
Visual Studio 2019
SQL 2019
.Net framework 4.6.1
不是Execute嗎?
(1)目前想到可能用兩個參數 @參數1 開始日期 @參數2 結束日期。當前端送出YYYYMM(比如202202)後,程式拆成2022-02-01, 2022-03-01,再用這兩個參數去執行sp
(2)目前有找到解法就是用參數物件用new DynamicParameters。然後去Exucute預存程序沒錯
比如:
public void ExecuteWithoutReturn2(string procedureName, DynamicParameters param = null)
{
var param1 = new DynamicParameters();
var param2 = new DynamicParameters();
param1.Add("@YYYYMMDD1", YYYYMMDD);
param2.Add("@YYYYMMDD2", YYYYMMDD);
using (SqlConnection con = new SqlConnection(connectionString2))
{ //執行stored procedure
con.Open();
con.Execute(procedureName, param1,param2, commandType: CommandType.StoredProcedure);
}
}
若有錯誤或需要改正的再麻煩小魚大指教(汗
如果只是要年月,
SQL也可以抓年月.
類似YEAR, MONTH之類的方法.
(不過MS-SQL似乎比較複雜一點)