語法: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年3月19日 星期一
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)
{
}
}
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;
}
}
/// 擴充方法ObjectIsNullOrEmpty
/// 適用於所有型態有null值時直接回傳DBNull.Value
///
public static class Extension
{
public static object ObjectIsNullOrEmpty
{
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";
}
}
}
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>
<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八達嶺長城
似乎就沒一個像樣的旅行,
一個人的旅行進化成一加一的旅行就這麼隨性展開,
目標北京,紫禁城,萬里長城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是非常適合的。
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
摩爾定律的定義歸納起來,主要有以下三種版本:
- 積體電路晶片上所整合的電路的數目,每隔18個月就翻一倍。
- 微處理器的效能每隔18個月提高一倍,或價格下降一半。
- 用一個美元所能買到的電腦效能,每隔18個月翻兩倍。
該定律指出,一個網絡的用戶數目越多,那麼整個網絡和該網絡內的每台電腦的價值也就越大。
訂閱:
文章 (Atom)