2018年3月19日 星期一

SQL ROW_NUMBER() 用法

語法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

row_number()從1開始,PARTITION BY COLUMN 以群組給序號,ORDER BY COLUMN DESC 降冪,ASC升冪
SELECT ROW_NUMBER() OVER(ORDER BY flex_value) row,flex_value
FROM dbo.[APP_FND_FLEX_VALUES]
--某些程式一定要key,又找不到主key時,可以用這個方式處理
row flex_value
1 000
2 000
3 001
4 001
5 001
6 001
7 001
8 001
9 001
10 001

2018年2月13日 星期二

Winform直接列印pdf

 [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool SetDefaultPrinter(string Name);
        private void Print_Click(object sender, EventArgs e)
        {
            try
            {


                //設定針測的檔案類型,如不指定可設定*.*
                string strFilePath = @"C:\inetpub\wwwroot\TEST\Report\PdfPrint\";
                FileSystemWatcher watch = new FileSystemWatcher(strFilePath, "*.pdf");
                //開啟監聽
                watch.EnableRaisingEvents = true;
                //新增時觸發事件
                watch.Created += watch_Created;
                Print.Enabled = false;


            }
            catch (Exception ex)
            {

            }
        }

        private void watch_Created(object sender, FileSystemEventArgs e)
        {
            try
            {
                string DirectPath = e.FullPath;

                //如果偵測到為檔案,則依路徑對此料夾做檔案處理
                if (File.Exists(DirectPath))
                {
                    //string s = @"C:\inetpub\wwwroot\SalesAppTest\Report\PdfPrint\07031_CEM20180100569_JENNY.pdf";
                    int intIndex = DirectPath.IndexOf("_");
                    string strPrintName = DirectPath.Substring(48, intIndex - 48);//string s = @"C:\inetpub\wwwroot\SalesAppTest\Report\PdfPrint\
                    string strFileName = DirectPath.Substring(48, DirectPath.Length - 48);
                    SetDefaultPrinter(strPrintName);

                    //begin
                    System.Diagnostics.ProcessStartInfo info = new ProcessStartInfo();
                    info.Verb = "print";
                    info.FileName = @"C:\Users\Administrator\Documents\visual studio 2012\Projects\WinDirectPrint\WinDirectPrint\FoxitReaderPortable\FoxitReaderPortable.exe";
                    info.CreateNoWindow = true;
                    info.UseShellExecute = false;
                    info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    info.Arguments = @"/p /h " + DirectPath;

                    Process p = new Process();
                    p.StartInfo = info;
                    p.Start();
                    //end   

                }
            }
            catch (Exception ex)
            {
            }
        }

2017年6月11日 星期日

所有基態null處理(泛型+擴充方法)

    ///
    /// 擴充方法ObjectIsNullOrEmpty
    /// 適用於所有型態有null值時直接回傳DBNull.Value
    ///
    public static class Extension
    {
        public static object ObjectIsNullOrEmpty(this T value)
        {
            if (value == null || string.IsNullOrEmpty(value.ToString()))
            { return DBNull.Value; }
            else
                return value;

        }

    }

2017年1月11日 星期三

Report Server報表轉pdf

  web service寫法

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using Microsoft.Reporting.WebForms;
using System.IO;
using System.Net;
using System.Security;
using System.Configuration;



namespace ReportPdfGenerater
{
    ///

    ///Service1 的摘要描述
    ///
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string ReportPdfGenerater()
        {
         
            try
            {
                ReportViewer ReportViewer1 = new ReportViewer();
                ServerReport SR = ReportViewer1.ServerReport;//Server Report

                ReportViewer1.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ReportServerUrl"]);
                IReportServerCredentials rsnc = new ReportCredential(ConfigurationManager.AppSettings["ReportServerUser"], ConfigurationManager.AppSettings["ReportServerPassword"], ConfigurationManager.AppSettings["ReportServerDomain"]);
                ReportViewer1.ServerReport.ReportServerCredentials = rsnc;
                ReportViewer1.ServerReport.ReportPath = @"/報表資料夾名稱/TEST";
                ReportViewer1.Height = 700;
                ReportViewer1.Width = 1000;

                ReportViewer1.ShowParameterPrompts = true;

                ReportParameter[] para = new ReportParameter[1];
                para[0] = new ReportParameter("EMPLOYEE_NUMBER", "999008");


                ReportViewer1.ServerReport.SetParameters(para);

                Microsoft.Reporting.WebForms.Warning[] tWarnings;
                string[] tStreamids;
                string tMimeType;
                string tEncoding;
                string tExtension;
                string[] streamids;
                byte[] bytes = ReportViewer1.ServerReport.Render("PDF", null, out tMimeType, out tEncoding, out tExtension, out streamids, out tWarnings);


                //設定匯出的路徑
                System.IO.FileStream fs = System.IO.File.Create(ConfigurationManager.AppSettings["ReportServerPDFLocation"] + "report.pdf");

                fs.Write(bytes, 0, bytes.Length);

                fs.Close();

            }
            catch (Exception ex)
            {
                return ex.Message;
            }
 


            return "OK";

        }
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Web.config設定
 <appSettings>
    <add key="ReportServerUser" value="帳號"/>
    <add key="ReportServerPassword" value="密碼"/>
    <add key="ReportServerDomain" value=""/>
    <add key="ReportServerPDFLocation" value="路徑"/>
    <add key="ReportServerUrl" value="ip位置/reportserver"/>
  </appSettings>
   
   
   
   
 

2016年12月4日 星期日

[旅遊]DAY1-2中國北京隨性自助旅行

繼上份工作離職前的腳踏車環島行後,
似乎就沒一個像樣的旅行,
一個人的旅行進化成一加一的旅行就這麼隨性展開,
目標北京,紫禁城,萬里長城GOGO


[DAY1]11/8台北往北京飛行之旅
國泰航空 09:10-11:10 台北-香港,12:00-15:00香港-北京

因為小豬的預算有限,只能坐轉機的航空啦,
一早坐首班捷運、客運到第一航廈,飛奔到機場,
到了大家已經準備登機,差點班機就掰掰。




轉香港飛機可是因為各項原因,班班延誤,
就這樣12:00轉機,硬是等到15:00了,
以小豬破破的英文,能聽的懂飛機誤點真是太厲害了,
就這樣賺了一頓startbukes,好吃,繼續午休。
 
到北京已經18:00
下飛機當然是馬上辦一卡通
用這個搭地鐵、公交車都十分優惠,
如果是像我們一樣隨性走走,可以辦一張十分方便。

地鐵  [機航站]-[東直門]-[祟文門]-[天壇東門]

走一公里到北京泉谷酒店
這間飯店就是平價乾淨,食物管飽
放個行李,就去吃個鍋燒麵,買零食就休息了

特別的芒果口味薯條、酸奶

就這樣走了快20000步



[DAY2]11/9故宮博物院(紫禁城)
今天目標故宮博物院(紫禁城),一生中要來一次的地方,
但走出了飯店大門,發現迷路了,就這麼跌跌撞撞,來回走了幾次後,
終於找到地鐵,北京的地鐵牌子就是那麼的灰暗不顯目。

走的太無聊開始亂拍,黃色的行道樹頂迷人

 地鐵:天壇東門-東單-天安門東


天安門廣場,下車就看到習大哥的照片,照張留念。


站的帥氣衛兵



租講解器,買票入場




午門
皇帝打仗出巡前校兵的午門




太和殿
舉行大典的地方,凡舉皇帝登極、大婚、冊立皇后和每年春節、冬至節、皇帝生日、公佈進行皇榜、派將出征等宴會大典都在此舉行。
皇帝才可以走的路



中和殿

每逢皇帝到太和殿舉行典禮時,都會到此休息,接受官員的跪拜禮。
前面四隻大象托著寶瓶,象徵吉祥平安





正大光明 -藏皇儲是誰的地方


護城河



景山公園

可以望紫禁城全景地方,天氣真是不給力




[DAY3]11/10八達嶺長城

2016年12月1日 星期四

[Linux]sudo指令用法

參考:http://tommy9394.com/blog/linux/linux-command/90.html

Linux中的sudo指令用法
1.作用
sudo是一種以限制配置文件中的命令為基礎,在有限時間內給用戶使用,並且記錄到日誌中的命令,權限是所有用戶。
2.格式
sudo [-bhHpV] [-s ] [-u ] [指令]
sudo [-klv]
3.主要參數
-b:在後台執行命令。
-h:顯示幫助。
-H:將HOME環境變量設為新身份的HOME環境變量。
-k:結束密碼的有效期,即下次將需要輸入密碼。
-l:列出當前用戶可以使用的命令。
-p:改變詢問密碼的提示符號。
-s :執行指定的Shell。
-u :以指定的用戶為新身份,不使用時默認為root。
-v:延長密碼有效期5分鐘。
4.說明
sudo
命令的配置在/etc/sudoers文件中。當用戶使用sudo時,需要輸入口令以驗證使用者身份。隨後的一段時間內可以使用定義好的命令,當使用配置
文件中沒有的命令時,將會有報警的記錄。sudo是系統管理員用來允許某些用戶以root身份運行部分/全部系統命令的程序。一個明顯的用途是增強了站點
的安全性,如果需要每天以超級用戶的身份做一些日常工作,經常執行一些固定的幾個只有超級用戶身份才能執行的命令,那麼用sudo是非常適合的。

2016年11月30日 星期三

[Azure]摩爾定律&梅特卡夫定律

摩爾定律參考:https://zh.wikipedia.org/zh-tw/%E6%91%A9%E5%B0%94%E5%AE%9A%E5%BE%8B
梅特卡夫定律https://zh.wikipedia.org/wiki/%E6%A2%85%E7%89%B9%E5%8D%A1%E5%A4%AB%E5%AE%9A%E5%BE%8B

摩爾定律的定義歸納起來,主要有以下三種版本:
  1. 積體電路晶片上所整合的電路的數目,每隔18個月就翻一倍。
  2. 微處理器的效能每隔18個月提高一倍,或價格下降一半。
  3. 用一個美元所能買到的電腦效能,每隔18個月翻兩倍。
梅特卡夫定律Metcalfe's law),一個網絡的價值等於該網絡內的節點數的平方,而且該網絡的價值與聯網的用戶數的平方成正比。
該定律指出,一個網絡的用戶數目越多,那麼整個網絡和該網絡內的每台電腦的價值也就越大。