2016年3月21日 星期一

ASP.NET SQL語法用in時,Parameters指令如何下

ASP.NET SQL語法用in時,Parameters指令如何下 本範例是為了找出主管所管轄之下的所有資料,故比較複雜,請直接看以下列數: 17,20,30,31,32,33,34,35,36,37,46,47

DataTable dt = new DataTable();
                SqlCommand cmd = new SqlCommand();
                StringBuilder sbSql = new StringBuilder();
                sbSql.AppendLine("SELECT * FROM " + VIEWNAME + " ");

                if (!string.IsNullOrEmpty(strKeyword))
                {
                    //sbSql.Append(" AND (name +batchnumber + jobtitles + CONVERT(varchar(30),joblevel) +  workingfunc + ogno + ogname + ouno + ouname + ename + status + CONVERT(varchar(30),cdt,120) like @strKeyword) ");
                    //select tblA.* from t_HRM_Evaluation tblA join dbo.FN_SPLIT_TBL('張,陳,王',',') tblB on tblA.name like '%'+tblB.Value+'%'
                    sbSql.Append(" JOIN dbo.FN_SPLIT_TBL(@strKeyword,',') tblB ON docno + patentcname + patentename + ogno + ogname + ouno + ouname + ouename + status + confirms + CONVERT(varchar(30),cdt,120) LIKE '%'+tblB.Value+'%' ");
                    cmd.Parameters.AddWithValue("@strKeyword", strKeyword);
                }

                sbSql.Append(" WHERE 1=1 ");
                sbSql.Append(" AND delete_flag=@delete_flag ");
                cmd.Parameters.AddWithValue("@delete_flag", delete_flag);
                sbSql.Append(" AND ouoid in (");


                int i = 1;
                if (dasgroup.IsManager(uoid, HRM.STATUS_LIST.ACTIVE, false, 400, 500) > 0)
                {
                    //找出該員所管轄部門
                    DataTable dtg = dasgroup.GetDataByLeader(HRM.STATUS_LIST.ACTIVE, false, uoid);
                    foreach (DataRow drg in dtg.Rows)
                    {
                        //找出部門下成員
                        Guid _goid = CUtility.StringToGuid(drg["oid"].ToString());
                        DataTable dtu = dasuser.GetChildDeptUser(_goid);
                        foreach (DataRow dru in dtu.Rows)
                        {
                            // IN clause
                            sbSql.Append("@UserId" + i.ToString() + ",");
                            // parameter
                            cmd.Parameters.AddWithValue("@UserId" + i.ToString(), CUtility.StringToGuid(dru["oid"].ToString()));
                            i++;
                        }
                    }
                }
                else
                {
                    sbSql.Append("@UserId" + i.ToString() + ",");
                    cmd.Parameters.AddWithValue("@UserId" + i.ToString(), uoid);
                }

                cmd.CommandText = sbSql.ToString();
                cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.Length - 1, 1) + ")";
               

                dt = sdp.GetDataTable(cmd);
                return dt;

Ref Url: https://dotblogs.com.tw/jeff-yeh/2008/09/05/5308

沒有留言:

張貼留言