declare @IPUser as varchar(20) set @IPUser = '202.39.128.0' SELECT * FROM ( SELECT CAST(SUBSTRING(IPStart, 0, S1) as bigint) * 1000000000 +CAST(SUBSTRING(IPStart, S1+1, S2-S1-1) as bigint) * 1000000 +CAST(SUBSTRING(IPStart, S2+1, S3-S2-1) as bigint) * 1000 +CAST(SUBSTRING(IPStart, S3+1, LEN(IPStart)-S3) as bigint) as IPStart ,CAST(SUBSTRING(IPEnd, 0, E1) as bigint) * 1000000000 +CAST(SUBSTRING(IPEnd, E1+1, E2-E1-1) as bigint) * 1000000 +CAST(SUBSTRING(IPEnd, E2+1, E3-E2-1) as bigint) * 1000 +CAST(SUBSTRING(IPEnd, E3+1, LEN(IPEnd)-E3) as bigint) as IPEnd ,CAST(SUBSTRING(IPUser, 0, C1) as bigint) * 1000000000 +CAST(SUBSTRING(IPUser, C1+1, C2-C1-1) as bigint) * 1000000 +CAST(SUBSTRING(IPUser, C2+1, C3-C2-1) as bigint) * 1000 +CAST(SUBSTRING(IPUser, C3+1, LEN(IPUser)-C3) as bigint) as IPUser FROM ( SELECT IPUser ,CHARINDEX('.',IPUser, 0) as C1 ,CHARINDEX('.',IPUser, CHARINDEX('.',IPUser, 0) + 1) as C2 ,CHARINDEX('.',IPUser, CHARINDEX('.',IPUser, CHARINDEX('.',IPUser, 0) + 1) + 1) as C3 ,Unit ,[ID] ,[IssueDate] ,[IPStart] ,[IPEnd] ,CHARINDEX('.',IPStart, 0) as S1 ,CHARINDEX('.',IPStart, CHARINDEX('.',IPStart, 0) + 1) as S2 ,CHARINDEX('.',IPStart, CHARINDEX('.',IPStart, CHARINDEX('.',IPStart, 0) + 1) + 1) as S3 ,CHARINDEX('.',IPEnd, 0) as E1 ,CHARINDEX('.',IPEnd, CHARINDEX('.',IPEnd, 0) + 1) as E2 ,CHARINDEX('.',IPEnd, CHARINDEX('.',IPEnd, CHARINDEX('.',IPEnd, 0) + 1) + 1) as E3 FROM .[dbo].[IP_Scope] LEFT JOIN (SELECT @IPUser as IPUser ) U ON 1=1 ) A ) B Where IPUser between IPStart and IPEnd
2016/08/25
SQL 判斷使用者IP 是否符合網段要求
單純使用 SQL 語法來檢查使用者 IP 在是在合格的網段中間,查無資料表示不在合格的清單內。本語法只適合檢查 IP v4以"."分隔的IP。
2011/03/18
Word字數統計
為了專案需要,經過努力的googling後,找到如何利用 Office.Interop.Word去讀取字數統計的資料,程式碼如下:
不過,因為是用Office.Interop.Word的元件,所以本機及未來的AP主機必須安裝對應的word版本,並將Office.Interop加入專案的參考。
其他字數資料所用的參數,請參見MSDN的說明。
string sFillPath = "D:\\temp\\test.doc";
object Unknown = Type.Missing;
//引用Office.Interop.Word
Microsoft.Office.Interop.Word.ApplicationClass MSWord = new Microsoft.Office.Interop.Word.ApplicationClass();
Microsoft.Office.Interop.Word._Document oDoc = null;
//以word開啟doc檔
object Source = sFillPath;
oDoc = MSWord.Documents.Open(ref Source, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown, ref Unknown);
//讀取相關字數資料
TextBox1.Text += "字數: " + oDoc.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticWords, ref Unknown).ToString();
TextBox1.Text += "\n 頁數: " + oDoc.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages, ref Unknown).ToString();
TextBox1.Text += "\n 字元(不含空白): " + oDoc.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticCharacters, ref Unknown).ToString();
TextBox1.Text += "\n 全型字數: " + oDoc.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticFarEastCharacters, ref Unknown).ToString();
//關閉word實例
oDoc.Close(ref Unknown, ref Unknown, ref Unknown);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc);
oDoc = null;
MSWord.Quit(ref Unknown, ref Unknown, ref Unknown);
System.Runtime.InteropServices.Marshal.ReleaseComObject(MSWord);
MSWord = null;
System.GC.Collect();
不過,因為是用Office.Interop.Word的元件,所以本機及未來的AP主機必須安裝對應的word版本,並將Office.Interop加入專案的參考。
其他字數資料所用的參數,請參見MSDN的說明。
2010/07/05
2010/06/01
在RowCommand事件中取得選取的row
這個問題困擾了很久,尤其是GridView設定分頁後,以GridViewRow gvr = GridView1.Rows[Convert.ToInt32(e.CommandArgument)];的方式取row換頁後就會出現索引的問題。之前都是以網路扒文找到的撇步解決,現在終於找到正解了。感謝小紀的天空提供的這篇文章。這裡提供範例給大家參考:
範例中在每個row裡都有一個LinkButton,去觸發RowCommand事件。
然後就在RowCommand寫入下面的code:
範例中在每個row裡都有一個LinkButton,去觸發RowCommand事件。
<asp:linkbutton id="lbtnPath" text="下載" CommandName="DownLoad" runat="server" ></asp:LinkButton>
然後就在RowCommand寫入下面的code:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.IndexOf("DownLoad")>=0)
{
//取得發生RowCommand事件的row
LinkButton tmLB = (LinkButton)e.CommandSource;
GridViewRow gvr = (GridViewRow)tmLB.NamingContainer;
...
}
}
2010/04/07
2009/10/27
Eclipse安裝
為了玩Google App Engine,才開始從新學習Java程式的開發,距前次寫Java程式已經有十多年了,那時是只有Applet可以在Browser上跑的年代。依據App engine入門指南的說明,下載了Java、Eclipse及相關套件,卻沒有想像中的順利,在摸索多次以後,把這個經驗寫下來,提供從頭開始玩App engine的人參考。
一切就緒就可以開始照入門指南的步驟來開發程式囉~
第一步:安裝 JAVA SDK
新像MS .net frameworks一樣,第一步當然就是把Java執行平台新建立起來,App engine支援 Java 5及Java 6,建議直接安裝 Java SE Development Kit JDK 6 Update XX 版本。
第二步:安裝 Eclipse
雖然中文版說明可安裝 Eclipse 3.3 (Europa) 與 3.4 (Ganymede) ,但英文還增加了 3.5 (Galileo),因為我先安裝 3.4 後,一直無法安裝 Web Tools Platform 套件,就改裝 3.5 版。Eclipse 是免安裝軟體,解壓縮後就可以執行了。
第三步:安裝 Web Tools Platform
開啟 Eclipse 後,從工具列>Help>Install New Software,新增一個下載點http://download.eclipse.org/webtools/updates/,勾選 Web Tools Platform (WTP) 3.1.1 後安裝。
第四步:安裝 Google Plugin for Eclipse
安裝程序同上一步驟,新增一個下載點 http://dl.google.com/eclipse/plugin/3.5 ,勾選 Plug-in 及 SDKs 後安裝。
一切就緒就可以開始照入門指南的步驟來開發程式囉~
2009/10/21
App engine上傳 error
從今年五月份開始玩Google App engine也有一段時間了,由於之前只開放Python語法,進入門檻使我怯步許久。八月份突然發現可以用Java語法開發,便讓我雀躍不已,雖然我對Java語法不熟,但至少碩士論文是用Java完成的,而且近兩年所學的C#語法根本就是Java的翻版,學習成本大幅降低。
尤其是使用eclipse這個IDE來輔助開發,還有Google App Engine專用的library,可以很smooth的開發專案。持續玩了一個多月,逐漸摸索出一些小小的心得,以後將陸續將學習的困境發表出來,提供其他新手參考。今天先將剛剛遇到的狀況提供出來:
我先前已建置了一個Java專案,寫了一些的Jsp檔、Servlet、以及JDO DataStore,也Deploy到App Engine主機過好幾次,因為App Engine專用的library及功能,只要按一個按鈕就完成deploy了,使我以為deploy---很簡單,沒想到今天就遇上了困難。在上傳檔案的時候,發生了下面的錯誤訊息:
後來才發現原來是因為我把一個DataStore物件的屬性值由public改成private,而恰巧這個屬性是一個
尤其是使用eclipse這個IDE來輔助開發,還有Google App Engine專用的library,可以很smooth的開發專案。持續玩了一個多月,逐漸摸索出一些小小的心得,以後將陸續將學習的困境發表出來,提供其他新手參考。今天先將剛剛遇到的狀況提供出來:
我先前已建置了一個Java專案,寫了一些的Jsp檔、Servlet、以及JDO DataStore,也Deploy到App Engine主機過好幾次,因為App Engine專用的library及功能,只要按一個按鈕就完成deploy了,使我以為deploy---很簡單,沒想到今天就遇上了困難。在上傳檔案的時候,發生了下面的錯誤訊息:
Unable to upload:
com.google.appengine.tools.admin.JspCompilationException: Failed to compile the generated JSP java files.
at com.google.appengine.tools.admin.Application.compileJavaFiles(Application.java:416)
at com.google.appengine.tools.admin.Application.compileJsps(Application.java:376)
at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:252)
...
後來才發現原來是因為我把一個DataStore物件的屬性值由public改成private,而恰巧這個屬性是一個
- Sub-Object,我猜是主機上舊的物件已經有資料在了,因為屬性有衝突,所以不讓我上傳。經改回成public後,就順利上傳了。
訂閱:
文章 (Atom)