[SQL]產生SQLAgent排程LIST

 SELECT

    -- job.job_id,

    -- notify_level_email,

     name,

-- Right('00000000' + Cast(steps.last_run_time as varchar),6) as time,--hhmmss

left(substring('000000',1,6-len(next_run_time))+Convert(nchar,next_run_time),2)+':'+substring(substring('000000',1,6-len(next_run_time))+Convert(nchar,next_run_time),3,2)+':'+right(next_run_time,2) as RUNTIME,


     enabled,

     description,

     step_name,

     command,

     server,

     database_name

FROM

    msdb.dbo.sysjobs job

INNER JOIN 

    msdb.dbo.sysjobsteps steps ON job.job_id = steps.job_id

left join  msdb.dbo.sysjobschedules as s on job.job_id = s.job_id 

WHERE

    job.enabled = 1 -- remove this if you wish to return all jobs

order by next_run_time asc

[RedAjax]UpdatePanelRenderMode in RedControl

         this.Master.AjaxManager.AjaxSettings.AddAjaxSetting(P_Edit, P_GridMulti, null, UpdatePanelRenderMode.Inline);

        this.Master.AjaxManager.AjaxSettings.AddAjaxSetting(P_Edit, P_GridList, null, UpdatePanelRenderMode.Inline);

        RadAjaxLoadingPanel loading = (RadAjaxLoadingPanel)this.Master.AjaxManager.FindControl("RadAjaxLoadingPanel1");

        this.Master.AjaxManager.AjaxSettings.AddAjaxSetting(P_GridMulti, P_GridMulti, loading, UpdatePanelRenderMode.Inline);


來源參考:

https://docs.telerik.com/devtools/aspnet-ajax/controls/ajaxmanager/how-to/radajax-and-webusercontrols

        

[SQL]UPDATE 產生流水號

 

DECLARE @MAX_ACCOLFID INT

SELECT @MAX_ACCOLFID = MAX(ACCOLFID)  FROM COIF_1

--以上流水號可承接別的TABLE

UPDATE COIF_2

SET @MAX_ACCOLFID = @MAX_ACCOLFID + 1,

     ACCOLFID = @MAX_ACCOLFID

[ASP.net][javascript]RadComboBox取出選取欄位的值

 <script type="text/javascript">

            function OnClientSelectedIndexChanged(sender, eventArgs) {

                var item = eventArgs.get_item().get_attributes()._data.BNKNM;

                document.getElementById("Q_txtBNKNM").value = item;

            }

    </script>

<ILS:ILSRadComboBox ID="Q_cbxBNKID" runat="server" ColumnName="BNKID" Filter="Contains" OnClientSelectedIndexChanged="OnClientSelectedIndexChanged" Onchange="OnClientSelectedIndexChanged">

                            <HeaderTemplate>

                                <table style="width: 150px" cellspacing="0" cellpadding="0">

                                    <tr>

                                        <td style="width: 25px;">代號

                                        </td>

                                        <td style="width: 125px; align-items: center;">名稱

                                        </td>

                                    </tr>

                                </table>

                            </HeaderTemplate>

                            <ItemTemplate>

                                <table style="width: 150px" cellspacing="0" cellpadding="0">

                                    <tr>

                                        <td id="td_cbxBNKID" style="width: 25px;">

                                            <%# DataBinder.Eval(Container, "Attributes['BNKID']")%>

                                        </td>

                                        <td id="td_cbxBNKNM" style="width: 125px;">

                                            <%# DataBinder.Eval(Container, "Attributes['BNKNM']")%>

                                        </td>

                                    </tr>

                                </table>

                            </ItemTemplate>

                        </ILS:ILSRadComboBox>


------------------------------------下面是連資料庫產生值

DataTable dt = DKHIFIComManager.Get_DKHIFI_USP_COM_FBNKID_AS01("", "");

                DataRow dr = dt.NewRow();

                dr["BNKID"] = string.Empty;

                dr["BNKNM"] = string.Empty;

                dt.Rows.InsertAt(dr, dt.Rows.Count);


                foreach (DataRow dataRow in dt.Rows)

                {

                    RadComboBoxItem item = new RadComboBoxItem();


                    item.Text = dataRow["BNKID"].ToString();//combobox

                    item.Value = dataRow["BNKID"].ToString();


                    string BNKID = (string)dataRow["BNKID"];

                    string BNKNM = (string)dataRow["BNKNM"];


                    item.Attributes.Add("BNKID", BNKID);

                    item.Attributes.Add("BNKNM", BNKNM);


                    Q_cbxBNKID.Items.Add(item);


                    item.DataBind();

                }

[EXCEL]巨集範例

Sub HCUP160P_AUTO()

'

' HCUP160P_AUTO 巨集

'


'

    Rows("1:19").Select ' 選取1-19row

    Range("A19").Activate

    Selection.Delete Shift:=xlUp '刪除選取的row

    

    

    Columns("A:AE").Select

    With ActiveWindow

        .SplitColumn = 0

        .SplitRow = 0

    End With

    Selection.UnMerge

    

    Cells.Select

    With Selection

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlLTR

        .MergeCells = False

    End With

    Rows("1:1").Select

    With ActiveWindow

        .SplitColumn = 0

        .SplitRow = 1

    End With

    ActiveWindow.FreezePanes = True

    

    

    Dim i As Long

    i = ActiveSheet.UsedRange.Rows.Count '取得現在工作表有幾個row

    Dim strD As String

    strD = "Z" + Str(i)

    strD = Replace(strD, " ", "")  '算出右下角最後一格

    

    '依照G欄做排序

    Columns("G:G").Select

    ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Clear

    ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range("G1"), _

        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort

        .SetRange Range("A2:" + strD) '排序範圍擴大

        .Header = xlNo

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

    Columns("A:Z").EntireColumn.AutoFit '完成後自動欄寬

End Sub



[SQL]從sp取得值

declare @AAA VARCHAR(10)
  CREATE TABLE #TMP_DEPT
  (
  COMPID VARCHAR(5)
  ,SEG  VARCHAR(5)
  ,SEGNM  VARCHAR(5)
  ,[TEXT]  VARCHAR(50)
  ,DEPTID VARCHAR(10)
  ,DEPTSIMNM VARCHAR(20)
  )
  INSERT INTO #TMP_DEPT EXEC HDUSP_IFCOM_GETFNDEPT2_A00 'HD','1', 'LG000','','FID'
 

 SELECT @AAA =DEPTID  FROM #TMP_DEPT

  SELECT @AAA

  DROP TABLE #TMP_DEPT

[BAT]找出符合檔名檔案list,並依名稱排序,再擷取第一行的檔案名稱,複製到目的資料夾

dir /b /o-n "*DBR_INV*" > list.txt

@Echo Off&Setlocal Enabledelayedexpansion
For /f "delims=" %%i in (list.txt) do (
Set /a n+=1
If !n!==1 DEL C:\Users\andy7333\Desktop\A\%%i 
If !n!==1 COPY C:\Users\andy7333\Desktop\%%i C:\Users\andy7333\Desktop\A\
)
Pause

[c#][asp.net]表單互相連結(專案使用-不一定符合不同專案)

表單互相連結,專案使用,不一定符合不同專案

1.      開啟連結與被連結的表單,均可能需要修改,以下用IFITA30F為例說明

a.      宣告formCode & formNumber,在最外層(page_load之外) formCode可以直接指定

 #region 連結用,避免formNumber抓到錯誤的上一頁面或下一頁面定義變數

string formCode = "IFITA30F";

string formNumber = string.Empty;

#endregion

b.     page_load,連結formNumber,所有用到this.FormNumber的地方都要修改為formNumber

注意生命週期Page_InitPage_PreInitPage_InitComplete,會在page_load前生成,我目前表單沒有,如果有用到的要注意

#region 連結用,避免formNumber抓到錯誤的上一頁面或下一頁面
      
       if (!IsPostBack)
       {
            if (Request["FormNumber"] != null)
            {
                formNumber = Request["FormNumber"].ToString();
            }
            else
            {
                formNumber = this.FormNumber;
            }
        }
#endregion

c.      Gridview中,使用連結HyperLink,直接鍵結DB data 欄位IFFORMNUM

<asp:TemplateField HeaderText="表單單號">
       <ItemTemplate>
                 <asp:HyperLink runat="server" ID="Hbtn" Text='<%# Bind("IFFORMNUM") %>' HeaderText="表單單號" ItemStyle-Width="150px" />
       </ItemTemplate>
</asp:TemplateField>

RowDataBound裡面

foreach (Control c in e.Row.Cells[3].Controls)
            {
                if (c.GetType().Equals(typeof(HyperLink)))
                {
                    HyperLink hl = (HyperLink)c;
                    string FormCode = "IFITA30F";
                    HyperLink Hbtn = (HyperLink)e.Row.Cells[3].FindControl("Hbtn");
                    string FormNumber = Hbtn.Text;
                    string COMPID = ftbCOMPID.Text;
 
                    string PARM = "FormCode=" + FormCode + "&FormNumber=" + FormNumber + "&COMPID=" + COMPID;
                    string TempURL = ResolveClientUrl("~/Apps/FORM/" + FormCode + "/" + FormCode + ".aspx?PGMID=VIEW&" + PARM + "&");
                    string URL = (DataManager.ResolveValidUrl(TempURL, "FCOM010"));
 
                    hl.Attributes.Add("onclick""opened2=window.open('" + URL + "','資訊類請採購單','width=1000,height=700,scrollbars=yes',''); opened2.opener=null; setTimeout('opened2.close()', 180000); return false;");
                    hl.NavigateUrl = "#"; 
                }
            }

 

2.      注意事項(原表單和被開啟表單均須要查看)

A.     Gridview中其他控制項,在傳送表單時,會有值需要在page_load重抓一次的寫法

a.      請在gridviewRowDataBound時,將值丟給ViewState,例如ViewState["IFITA31FD80"]

b.     Page_load重抓值時,請用ViewState["IFITA31FD80"]傳回給dataset

 

B.     如果Gridview有使用temptable,例如Gridview1.Temptable  => 注意開啟與被開啟表單的Gridview1名稱,如果重複,可能導致抓錯Temptable

a.      如果開啟同一formCode的表單,需要開啟自己本身的表單,盡可能避開使用Temptable,改用ViewState可以有相同作用但不會錯誤

b.     開啟不同formCode的表單,只要在命名Gridview時,加入formCode名稱就可以避開問題,例如fgvD1 => fgvIFITA30D1

 

C.     如果有使用,關號、支號等判斷,請注意,this.StepA or (B)=> 會抓到你正在處理的表單的關號,而非被開啟的表單視窗的關號

a.      簡單判斷為formNumber == this.FormNumber,如果相等,就是正在處理的表單,如果不相等,就是被開啟的表單

b.     如必須在被開啟的表單抓到關號,請從DB抓對應formCode & formNumber的關號支號,才會正確


網頁生命週期以及順序

各個頁面的生命週期以及順序

protected void Page_PreRender(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_PreRender 事件<br/>");
}

protected void Page_PreRenderComplete(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_PreRenderComplete 事件<br/>");
}
protected void Page_PreInit(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_PreInit 事件<br/>");
}

protected void Page_Init(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_Init 事件<br/>");
}

protected void Page_InitComplete(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_InitComplete 事件<br/>");
}

protected void Page_PreLoad(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_PreLoad 事件<br/>");
}

protected void Page_Load(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_Load 事件<br/>");
}

protected void Page_LoadComplete(object sender, EventArgs e)
{
   Response.Write("MasterPage Page_LoadComplete 事件<br/>");
}
執行網頁看看印出的結果如下
如果ASPX網頁有加入了MasterPage 結果如下

[JavaScript][C#][ASP.NET]ASP.NET Gridview 建立 HyperLink,C#動態產生連結後,用JavaScript開啟視窗+自動關閉

此寫法為因應專案需要,不一定是最好的解法

1. 引擎只吃動態產生的連結(需透過呼叫特定方法,EX: DataManager)
2. 接手專案 o r由廠商開發之後自行維護
3. 寫在JavaScript可能比較不好串參數
-------------------------------------------------
4. 自己的專案,作為紀錄 => 儲存前 pageload 要 databound gridview 為null的table
  if (Request["FormNumber"] != null)
            {
                formNumber = Request["FormNumber"].ToString();
            }
            else
            {
                formNumber = this.FormNumber;
            }
5. Detail gridview 名稱盡量區別,gv.TempTable時才部會抓錯誤

[JavaScript]
    <script type="text/javascript">
        var opened; //設定關閉視窗用的全域變數 IE8必須,IE11不需要
    </script>

[ASP.NET]
Gridview
<asp:TemplateField HeaderText="表單單號">
                            <ItemTemplate>
                                <asp:HyperLink runat="server" ID="Hbtn" Text='<%# Bind("IFFORMNUM") %>' HeaderText="表單單號" ItemStyle-Width="150px" />
                           
                            </ItemTemplate>
                        </asp:TemplateField>

[C#]
RowDataBound
 foreach (Control c in e.Row.Cells[3].Controls)
            {

                if (c.GetType().Equals(typeof(HyperLink)))
                {
                    HyperLink hl = (HyperLink)c;
                    string FormCode = "IFITA30F";
             
                    HyperLink Hbtn = (HyperLink)e.Row.Cells[3].FindControl("Hbtn");
                    string FormNumber = Hbtn.Text;
           
                    string COMPID = ftbCOMPID.Text;

                    string PARM = "FormCode=" + FormCode + "&FormNumber=" + FormNumber + "&COMPID=" + COMPID;
                    string TempURL = ResolveClientUrl("~/Apps/FORM/" + FormCode + "/" + FormCode + ".aspx?PGMID=VIEW&" + PARM + "&");
                    string URL = (DataManager.ResolveValidUrl(TempURL, "FCOM010"));
                 
                 
                 
                    hl.Attributes.Add("onclick", "opened=window.open('" + URL + "','資 訊類請採購單','width=1000,height=700,scrollbars=yes',''); opened.opener=null; setTimeout('opened.close()', 5000); return false;");
                    hl.NavigateUrl = "#";
               
                 

                 
                }
            }

[C#][ASP.NET]在Gridview插入隨欄位產生的HyperLink

原因:原始的方法,連接字串參數只能放在後面
以下方式就能產生,依照定義的字串去產生連結

[ASP.NET]

<asp:TemplateField HeaderText="表單單號">
<ItemTemplate>
<asp:HyperLink runat="server" ID="Hbtn" Text='<%# Bind("IFFORMNUM") %>' HeaderText="表單單號" ItemStyle-Width="150px" />
</ItemTemplate>
</asp:TemplateField>

[C#]
在RowDataBound裡

            foreach (Control c in e.Row.Cells[3].Controls) //隨欄位插入

            {

                if (c.GetType().Equals(typeof(HyperLink)))

                {

                    HyperLink hl = (HyperLink)c;

                    string FormCode = "IFITA30F";

                    string FormNumber = ftbFORMNUM.Text;

                    string COMPID = ftbCOMPID.Text;

    //連線字串隨專案需求,最簡單直接指定URL即可

                    string PARM = "FormCode=" + FormCode + "&FormNumber=" + FormNumber + "&COMPID=" + COMPID;

                    string TempURL = ResolveClientUrl("~/Apps/FORM/" + FormCode + "/" + FormCode + ".aspx?PGMID=VIEW&" + PARM + "&");

                    string URL = (DataManager.ResolveValidUrl(TempURL, "FCOM020"));

         



                    hl.Attributes.Add("onclick", "window.open('" + URL + "','資訊類請採購單','width=1000,height=700,scrollbars=yes','');return false;");

                    hl.NavigateUrl = "#";

                }

            }

[ASP.NET][JavaScript]JavaScript取得radiobuttenlist 值傳給控制項

function displayrbl()
        {
            var selValue;
            var rbl = document.getElementById("ctl00_ContentPlaceHolder1_rblPORTCODE");
            var rbllist = rbl.getElementsByTagName("INPUT");

            for (var i = 0; i < rbllist.length; i++) {
                if (rbllist[i].checked) {
                    selValue = rbl.childNodes[(i*2)+1].innerText;
                }
            }

            document.getElementById('ctl00_ContentPlaceHolder1_ftbPORTNM').value = selValue;
        }
--------------------------------------------------------------------------------------------------------------------

<asp:RadioButtonList ID="rblPORTCODE" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow"  ColumnName="PORTCODE" onchange="displayrbl();">
                            </asp:RadioButtonList>

[ASP.NET]使用javascript,Textbox各種字串檢查

此寫法為輸入後驗證,不驗個每一個字

好處:驗證可以使用在gridview的textbox中,錯誤可以直接刪除該字串,不用判斷幾行幾列

壞處:使用者會輸入後才發現錯誤,有些不便

JS部分

//單純檢查數字0-9
        function IsIntText(textControl) {
            var str = textControl.value;
            var regexp = /^([1-9][0-9]*)$/; //正整數
            var msg = '';
            if (!regexp.test(textControl.value)) {
                msg = '數字格式不正確!';
            }
            if (parseInt(str, 10).toString() == '0') {     //表示輸入的是0或0.00啦
                msg = '數字格式不可為0!';
            }
            if( msg != ''){
                alert(msg);
                textControl.value = "";
            }

 function IsfloatText(textControl) {
            var str = textControl.value;
            var str = textControl.value;
            var regexp = /^[0-9]+.[0-9]{1,2}?$/; //帶2位小數正實數  發現10A1這種無法找出 下方修補邏輯
            var msg = '';
            if (!regexp.test(textControl.value)) {
                msg = '數字格式不正確!';
            }
            var regexp2 = /[A-Za-z]/
            if (regexp2.test(textControl.value)) { //若包含字母
                msg = '數字格式不正確!';
            }
            if (parseFloat(str, 10).toString() == '0') {     //表示輸入的是0或0.00啦
                msg = '數字格式不可為0!';
            }
            if (msg != '') {
                alert(msg);
                textControl.value = "";

            }

//發票驗證
function isINVNO(textControl) {
            var str = textControl.value;
            if (str.length = 10) {
                var regexp = /^[A-Z]{2}[0-9]{8}$/;
                if (!regexp.test(textControl.value)) {
                    alert("發票格式不正確!");
                    textControl.value = "";
                }
            }
            else {
                alert("發票格式不正確!");
                textControl.value = "";
            }

        }
 =================================================

ASP.NET
搭配JS  加入onchange="IsIntText(this)" 即可

範例
   <iFlow:FDataTextBox ID="tbORDERNUM" runat="server" Width="100px" Text='<%# Eval("ORDERNUM") %>' onchange="IsIntText(this);"
                            MaxLength="10"></iFlow:FDataTextBox>

[C#]用 Regex 做字串比對

用法如下

using System.Text.RegularExpressions;


    public bool IsNumeric(String strNumber)
    {
        Regex NumberPattern = new Regex("[0-9]");
        return NumberPattern.IsMatch(strNumber);

    }

RegExp說明範例
/a/含有字母 a 的字串"a","apple"
/./含有任意字元的字串"aaa","a","嗨"
/a./含有字母 a 後面接一個任意字元的字串"aaa","apple"

*: 出現 0 次以上
?: 出現 0 次或 1 次
+: 出現一次以上
{2}: 出現兩次
{2,}: 出現兩次以上
{,10}: 出現十次以下
{2,5}: 出現兩次到五次
RegExp說明範例
/a*/包含 0 次以上的 a"apple","hello"
/ab*/包含一個 a,後面至少 0 個 b"a","ab"
/a?/包含空字串或一個 a"c","","app"
/123a+/包含 123 後面有一個以上的 a"123a","123app"
/123a{1,2}/包含 123 後面出現一個或兩個 a"1123a","123aaa"

^: 開頭
$: 結尾
RegExp說明範例
/^app/開頭是 app 的字串"app","apple"
/ry$/結尾是 ry 的字串"Larry"
/^abcd$/開頭結尾中間只有 abcd 的字串"abcd"
/^La.*le$/開頭是 La 尾巴是 le 的字串"Larry loves apple"

[]: 括號內的任何字元
[^]: 不在括號內的任何字元
RegExp說明範例
/^[aeiou]/開頭是小寫母音的字串"apple","oh"
/[^aeiouAEIOU]$/結尾不是母音的字串"Larry","ok"
/^[aeiou]{3}$/三個小寫母音組成的字串"aaa","aeu"
/^[^aeiou]*$/不包含小寫母音的字串"hEllO","ApplE"
/[0-9]/含數字的字串"app1e","123"
/[a-z]/含小寫字母的字串"12a45","aaa"
/^[^a-zA-Z]$/不含英文字母的字串"123","345"

\.: "." 這個字元,直接寫 /./ 會被判斷成任意字元
\+: "+" 這個字元,類似的還有 \?, \*
\(: "(" 這個字元,類似的還有 \), \[, \]
\\: "\" 這個字元
\d: 任何數字字元,等同 [0-9]
\D: 任何非數字字元,等同 [^0-9]
\w: 任何數字字母底線,等同 [A-Za-z0-9_]
\W: 任何非數字字母底線,等同 [^A-Za-z0-9_]
\s: 任何空白字元(空白,換行,tab),等同 [ \f\n\r\t\v]
\S: 任何非空白字元(空白,換行,tab),等同 [^ \f\n\r\t\v]

實例

RegExp說明範例
/^\d{4}-\d{2}-\d{2}$/西元生日格式"1996-08-06"
/^[A-Z]\d{9}$/身分證字號"A123456789"
/^09\d{8}$/手機號碼"0912345678"
/^[^aeiou]*$/不包含小寫母音的字串"hEllO","ApplE"
/^.*@gmail\.com$/gmail 信箱"test@gmail.com"
/^[0-9\+\-\*\/]*$/四則運算算式"1+2*3"

[DataSet Bug]無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束

在使用TableAdapter作Query時發生 1. 原因為有些資料欄位Query出來後為null值 但是該欄位在dbDataSet的屬性AllowDBNull為False 因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True 2. maxLength 檢...