顯示具有 String.Format 標籤的文章。 顯示所有文章
顯示具有 String.Format 標籤的文章。 顯示所有文章

2022年7月31日 星期日

V80C02 - 匯出 – c# & js - 格式化小數2位 , 格式化日期, -toString() -color - 粗體文字 - 欄位屬性 - null.length null.toString 均會 Error

 目的: 匯出 XLS檔案, 若 [標準工時][已報工時] – 若空白,則顯示 0.00 , 格式化小數2位

處理說明:  一 *.cs  Substring,ToString()

                         1>Double.Parse(dt.Rows[i]["STDHRS"].ToString("0.00"));

                         2>DateTime.Parse(Tmp_dt.Rows[i]["BRDT"].ToString()).ToString("yyyy/MM/dd"); 

                          --> myfunc.Date2Str(Tmp_dt.Rows[i]["BRDT"].ToString());  

                                //日期格式 yyyy/mm/dd

                             DateTime.Now.ToString("yyyy/MM/dd");
                             string Tmp_TATM = DateTime.Now.ToString("yyyy/MM/dd  hh:mm:ss");

                         3>Tmp_Str.Substring(pos,len);

                              //去除尾碼;   

                               -->    Tmp_Str=Tmp_Str.Substring(Tmp_Str.Length-1,1);

                        4>var Tmp_int=3;   Tmp_int.ToString();

                        5>日期加 1天   Datetime.AddDays
                              DateTime.Now.AddDays(1).ToShortDateString();
  
Tmp_APDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_APDT2"]).AddDays(1));

                  

二. *.js  substring , substr,toString(), trim()

                        1> par_format = 'Y/m/d  H:i';  //日期格式    yyyy/mm/dd  hh/mm ,                                                                Tmp_DateStr = Ext.Date.format(new Date(par_date), par_format);

{ header: "執行時間", dataIndex: "TATM", width: 150, sortable: false, TMType: "date", renderer: Ext.util.Format.dateRenderer('Y/m/d H:i') },

                       2>Tmp_Str.substring(pos1,pos2);
                           Tmp_Str.substr(pos1,len);        
                                  Ex:  
                                  string  Tmp_Str="goodboy";                              
                                  Tmp_Str=Tmp_Str.substring(0,3);  //  Tmp_Str=good
                                  Tmp_Str=Tmp_Str.substr(0,2);       //  Tmp_Str=go

                       3>var Tmp_int=24;  //將數字轉成字串
                            mysuccessalert(Tmp_int.toString())          ;
                       
                      4>將文字轉成數字  Number(Tmp_Str)
                           var Tmp_Str="24";
                           Tmp_int=Number(Tmp_Str);     
                      
                      5>設定文字顏色                
                               {
                                    xtype: "label", text: "(請刷識別證)", width: 120, border: 2, 
                                    style: "font-size: 12pt; color: blue; background:  gray; ",
                                },             
                    6>  - 粗體字體
                        var cmp_TAMAN_lbl = get_cmp_lbl0("(請刷識別證)", 130);    
                        cmp_TAMAN_lbl.style = "font-size: 12pt; color: blue; ";
                        cmp_TAMAN_lbl.margin = "0 0 0 10";

                    7>判斷是否null
                          if (checkisnull(cur_rec)) {
                            mysuccessalert("空值 ")          ;    
                          } 
                         --.>  undefined
                                if  (par_str == '')  ||
                                    (typeof (par_str) == 'undefined')  ||
                         --.> 判斷空Object {} 
                                if  (typeof (par_str) == 'object') && (Object.keys(par_str).length === 0)
 
                 6> null.toString()  --> Error , rec["MATNR"].toString()  --> Error
                      所以先 rec2str(rec); 將 null 欄位值轉成 ''
                 7> par_str=0 , 則 par_str == '', true,   ---> 需注意 
                      --> 需改成  if (par_str==='') , false --> 正確   
                 8>type of  日期  --> Object 
                     checkisnull(日期)  --> 會傳回 true
                     -->         if ((typeof (par_str) == 'object') && (Object.keys(par_str).length === 0))
                                   return true;
                     --> 所以判斷日期空白,不用 checkisnull , 改用 if  (par_date.length==0)  {}
                    DatetoStr(cnow(),"Y/m/d")  
                    Tmp_DT = DatetoStr(now, "Y/m/d");

                9>設定 HTML欄位屬性  - setFieldsCls
                    setFieldsCls('mySubFormE',
                                           [],  //required
                                            ['sub_DELMAN','sub_TASKNO', 'sub_RQMAN', 'sub_RQDT', 
                                       _RQDEP', 'sub_STLC', 'sub_EDLC', 'sub_TASKREMARK',],//readonly
                                       ['sub_DELCAUSE']);

               10>判斷字串是否為數字: isNaN(Number(par_SAPNO, 10))
                    if (isNaN(Number(par_SAPNO, 10))) {
                          return par_SAPNO;                                           //QDR工單/ICSU工單
                       }
                   else 
                        return par_ORStr + "0000" + par_SAPNO;    //一般工單
              11>string.trim()
                     if (Tmp_C_UNIT.trim() != "")

三.*.js   - null 
      null.toString()  null.length 均會有問題
       所以欄位.toString()  欄位.length 時必需先過濾 欄位值==null 
      
     function DatetoStr(par_date, par_format) {
           if (checkisnull(par_date)) {
              return "";
          }
      }
       
       myfunc.js                              
       nulltoStr(par_Fld) ,

一. c#  *.cs

1>sheet1.Range[myfunc.GetExcelPos(6, i + 1)].Text = 
    Double.Parse(dt.Rows[i]["STDHRS"].ToString("0.00"))
   //另一方法 String.Format("{0:0.00}", Double.Parse(dt.Rows[i]["STDHRS"].ToString()));


if (myfunc.checkisnull(dt.Rows[i]["ALSHR_"].ToString()))
    { sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text = "0.00"; }
else
    {
      sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text = 
             Double.Parse(dt.Rows[i]["ALSHR_"].ToString("0.00"));
      //                String.Format("{0:0.00}", Double.Parse(dt.Rows[i]["ALSHR_"].ToString()));
     }


2>格式化日期:
    sheet1.Range[myfunc.GetExcelPos(0, i + 1)].Text =
           DateTime.Parse(dt.Rows[i]["DT"].ToString("yyyy/MM/dd"));
         //另一方法 :String.Format("{0:yyyy/MM/dd}", DateTime.Parse(dt.Rows[i]["DT"].ToString()));


3>格式化時間: 
    Tmp_MKTM = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

   if (Tmp_dt.Rows[i]["BRDT"].ToString().Length > 0)
       Tmp_BRDT = DateTime.Parse(Tmp_dt.Rows[i]["BRDT"].ToString()).ToString("yyyy/MM/dd");
   else
       Tmp_BRDT = "";

4>NEXT PK: 流水號+1  - string.SubString(pos,length)
     Tmp_NEXT_ASPNO = Tmp_ASPNO + (int.Parse(Tmp_MAX_ASPNO.Substring(11, 3))+1).ToString("000");



二.*.js  - 格式化日期 YYYYMMDD

 1>>*.js   

       Ext.Loader.loadScript({    url: '../Scripts/tlsbase.js'  });  // for  logininfo.id
        np["ASPNO"] = "ASP" + DatetoStr(now, "Ymd");
        var Tmp_cur_DT = DatetoStr(cnow(), "Y/m/d");  
        
        var Tmp_MKER = loginInfo.id;
        var Tmp_MKDT = DatetoStr(now, "Y/m/d");  
        Ext.getCmp("MKER").setValue(Tmp_MKER);
        Ext.getCmp("MKDT").setValue(Tmp_MKDT);

function DatetoStr(par_date,par_format) {
    var Tmp_DateStr;
    if (checkisnull(par_format))
        par_format = 'Y/m/d';  //日期格式    Y/m/d : yyyy/mm/dd   ,       Ymd: yyyymmdd
    Tmp_DateStr = Ext.Date.format(new Date(par_date), par_format);
    return Tmp_DateStr;
}

{ header: "執行時間", dataIndex: "TATM", width: 150, sortable: false, TMType: "date", renderer: Ext.util.Format.dateRenderer('Y/m/d H:i') },


2>Tmp_Str.substring(startpos,endpos)
              .substr(startpos,length)

    string  Tmp_Str="goodboy";
    Tmp_Str=Tmp_Str.substring(0,3);  //  Tmp_Str=good
    Tmp_Str=Tmp_Str.substr(0,2);       //  Tmp_Str=go
  

3>字串轉數字
Number(Tmp_Str);
Number("30");

4>字串是否在長字串中stringObject.indexOf(searchvalue,fromIndex)
     let myStr = "A012";
     myStr.indexOf("[",0); /* -1 沒有找到 */

三. *.cs
1>字串轉數字

int Tmp_cnt=int.Parse(myfunc.SqlValue(Tmp_Sql));

2>trim 字串
var Tmp_Str="ABC  ";
Tmp_Str.Trim();  //--> "ABC"

2>判斷字串是否為數字
public static string get_SAPNO(string par_SAPNO,string par_ORStr="")

 int n;
bool isNum = int.TryParse(par_SAPNO, out n);
 if (isNum)
    return par_SAPNO;
 else 
    return par_ORStr + "0000" + par_SAPNO;