卡西卡的小寶庫
寶庫寶庫寶庫

[SP]up_Desc

Posted In: , . By 卡西卡

類似Oracle的desc指令

CREATE PROCEDURE up_desc (
    @TABLE_NAME NVARCHAR(128)  -- 資料表名稱
)AS
SELECT COLUMN_NAME,
CASE DATA_TYPE
        WHEN 'char' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),CHARACTER_MAXIMUM_LENGTH)+')'
        WHEN 'varchar' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),CHARACTER_MAXIMUM_LENGTH)+')'
        WHEN 'nvarchar' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),CHARACTER_MAXIMUM_LENGTH)+')'
        WHEN 'numeric' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),NUMERIC_PRECISION)+','+CONVERT(VARCHAR(10),NUMERIC_SCALE)+')'
        ELSE DATA_TYPE END AS OBJECT_DATA_TYPE,
    B.value as [OBJECT_DESCRIPTION]
FROM [INFORMATION_SCHEMA].[COLUMNS] A
  LEFT JOIN ::fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'TABLE', @TABLE_NAME, 'COLUMN', default) B ON A.COLUMN_NAME=B.objname
WHERE TABLE_NAME=@TABLE_NAME
ORDER BY A.ORDINAL_POSITION

 

[SP]up_Obj

Posted In: , . By 卡西卡

尋找view,proc,func中有某個字串

CREATE PROC up_obj (
  @STR VARCHAR(100)
) AS

SELECT object_name(id) AS OBJNAME
FROM [syscomments]
WHERE [text] like '%'+@STR+'%'
ORDER BY object_name(id)

 

[SP]up_Select

Posted In: , . By 卡西卡

將資料表所有欄位組成SELECT句

CREATE PROCEDURE up_Select (
    @TABLE_NAME NVARCHAR(128) -- 資料表名稱
)AS
DECLARE @BUF NVARCHAR(1000)
DECLARE @COLUMN_NAME NVARCHAR(128)

SET @BUF=''

DECLARE curView CURSOR  FOR
    SELECT COLUMN_NAME
    FROM [INFORMATION_SCHEMA].[COLUMNS]
    WHERE TABLE_NAME=@TABLE_NAME

OPEN curView
FETCH curView
INTO @COLUMN_NAME

WHILE @@FETCH_STATUS = 0
    BEGIN -- WHILE
        SELECT @BUF=@BUF + @COLUMN_NAME + ','
        FETCH curView INTO @COLUMN_NAME
    END -- WHILE

CLOSE curView
DEALLOCATE curView

IF Len(@BUF)>0
BEGIN
    SELECT @BUF = LEFT(@BUF,LEN(@BUF)-1)
    PRINT 'SELECT'
    PRINT @BUF
    PRINT 'FROM ['+@TABLE_NAME+']'
END
ELSE
    PRINT '(none)'

 

[SP]up_RefreshView

Posted In: , . By 卡西卡

重整所有視表。
sp_refreshview [msdn]

CREATE PROCEDURE [up_RefreshView] AS
DECLARE @ViewName sysname

DECLARE curView CURSOR  FOR
    SELECT TABLE_NAME
    FROM [INFORMATION_SCHEMA].[TABLES]
    WHERE TABLE_TYPE='VIEW' AND [TABLE_SCHEMA]<>'INFORMATION_SCHEMA' AND SUBSTRING(TABLE_NAME,1,3)!='sys'

OPEN curView FETCH curView INTO @ViewName

WHILE @@FETCH_STATUS = 0
    BEGIN -- WHILE
        print @ViewName
        exec sp_refreshview @ViewName
        FETCH curView INTO @ViewName
    END -- WHILE

CLOSE curView
DEALLOCATE curView

 

Ping 1.1

Posted In: , . By 卡西卡

使用範例:
public class MainProc
{
 public static void Main(string[] argv)
 {
  // 測試
  bool ret = NetworkHelper.Ping(argv[0]);
  Console.WriteLine("Ping [{0}] = {1}", argv[0], ret);
 }
}
 

注意事項:

  • .NET 2.0 以上有Ping Class可以直接使用。[msdn]

參考資料:

 

ArcIMS - GET_FEATURES

Posted In: , . By 卡西卡

  •  GET_FEATURES 只能對Query, Feature, ArcMap 這3種Server送出。
  • 送出的Request編碼要設為big5才不會有中文亂碼。不能用UTF-8。

送出

  • LAYER:指定要查那一層
  • SPATIALQUERY:查詢條件
    • subfields:回傳的欄位,用空格分隔(如:ST_CODE ST_NAME)
      #ALL#, #SHAPE#
    • where:條件。<>符號要先編碼

回傳

 


GET_FEATURES
  • outputmode (binary, xml, newxml)
    binary表示傳及收都是compressed binary stream。
    newxml回傳型式如上面的例子。
    xml會傳回簡短型式的資料
    <FEATURE><FIELDS STCODE="466880" STNAME="板橋" /></FEATURE>
  • 加上featurelimit可以限制回傳的資料筆數
  • 加上beginrecord可以指定從第幾筆資料開始回傳。
  • 加上skipfeatures,true表示不傳細項,只回傳有幾筆資料。

subfields

  • #ALL#會回傳所有欄位。
  • 加上 #SHAPE# ,如:"#SHAPE# STCODE STNAME,會回傳:
    <FEATURE>
    <FIELDS>
    <FIELD name="STCODE" value="466900" />
    <FIELD name="STNAME" value="淡水" />
    <FIELD name="#SHAPE#" value="[Geometry]" />
    </FIELDS>
    <MULTIPOINT>
    <POINT x="293512.984729649" y="2784394.69179442"/>
    </MULTIPOINT>

    </FEATURE>

 

參考資料:

 

ArcIMS - GET_IMAGE

Posted In: , . By 卡西卡

.NET Link, ArcXML

相關DLL

  • ESRI.ArcIMS.Server.dll
  • ESRI.ArcIMS.Server.TCP.dll

重點在於將圖檔大小和地圖範圍填入XML中傳給ArcIMS Server,並解析回傳的結果。

送出

接收

參考資料:

http://gis.ascc.net/ISTIS/tools.html

 

GIS 座標轉換

Posted In: . By 卡西卡

http://jidanni.org/geo/taiwan_datums/

現代台灣地圖只會出現以下兩種座標:

  1. TWD67
    經緯度 longitude/latitude
    二度分帶 2-degree transverse Mercator
  2. TWD97/WGS84
    經緯度 longitude/latitude
    二度分帶 2-degree transverse Mercator

理想狀況是:圖資內含標示4種坐標,以便使用
現實情況是:大多數只標示1、2種,甚至完全沒有。

http://www.mobile01.com/topicdetail.php?f=130&t=374120

  • TWD67、TWD97是2種不同的橢球,具有不同的幾何因子
    所以在真實世界中的同一地點,會因為選用來標示的橢球不同
    而具有不同的經緯度、坐標。
  • 2度分帶是台灣地區使用的坐標投影方式之一
    將橢球坐標(經緯度)利用橫麥卡托投影投影到一平面上
    得到平面坐標 N (North)、E (East) (或 Y、X)。
淡水 121°26' 24" E 25°09' 56" N
經緯度 121.44 25.16555556
TM2 293512.984728072 2784394.69228671
Google Map , 台灣電子地圖服務網  跑到淡水河裡了 =.=a
  • 度=度+分/60+秒/3600
  • Google Earth只採用WGS 84的經緯度資料 [資料來源]
  • TM2之座標原點:X軸在121°E向西平移250000公尺,Y軸在赤道。
    293512是(距121°E 以東)(250-293)43公里又512公尺
    2784394是(距赤道)2784公里又394公尺
  • TWD67 與 TWD97 座標概略換算公式:
    TWD67 橫座標 = TWD97 橫座標 - 828 公尺
    TWD67 縱座標 = TWD97 縱座標 + 207 公尺

.NET 的座標轉換Library: OGL - Open GPS / LBS library

using OGL_Library;

GPSDatum g = new GPSDatum();
//Analysys
string[] s1 = g.ReturnAnalysisLongitude(Long);
// Long s1[0]=度,s1[1]=分, s1[2]=秒
string[] s2 = g.ReturnAnalysisLatitude(Lat);
// Lat s2[0]=度,s2[1]=分, s2[2]=秒

// result

string[] sx = g.WGS84toTM2(Long,Lat);
// TM2 sx[0]=TM2_X, sx[1]=TM2_Y

延伸閱讀:


CSV轉成SHP檔的小工具 xy2shp

  • CSV檔內不能有名為“ID”的欄位,會和產出的檔案衝突,而無法加入layer。
  • 載入CSV檔後指定XY的欄位,再按「Convert to Shp + KML File (WGS84 coordinate required)」
  • 會產出 .dbf, .kml, .shp, .shx四個檔案。

 

demo.aspx.cs

  • [5] 實作 ICallbackEventHandler [msdn] 介面
    將游標停在ICallbackEventHandler上,在第一個字的下方會出現小方塊(或按Shift-Alt-F10)可以出現實作介面的選項。
  • [12-15] 方法一,定義一個javascript function封裝callback function,適用較複雜的情況。
  • [16-19] 方法二,直接將callback function指定給button的onclick event,適用較簡單的情況。

demo.aspx

  • [5] function ClientCallback(result, content)
  • [9] function ClientErrorCallback(error, content)

demo.aspx [output]

  • [1, 9-12]由系統自動產生。
  • [2-5] 由方法一 RegisterClientScriptBlock 註冊產生
  • [8] WebForm_DoCallback 由方法二產生。

執行畫面:

  • 錯誤測試時,回傳的字串會多「0|」。
  • 按下C按鈕:fnTest→Test→WebForm_DoCallback…→…RaiseCallbackEvent…→…GetCallbackResult…→…ClientCallback

參考資料:

 

狀況1:轉成BaseClass時的差異

  • 使用obj2.MethodA時,是呼叫classB的MethodA
  • 使用classBase存取物件時,用new的classB是呼叫classBase的MethodA!

狀況2:三層繼承時

  • 編譯時,classC.MethodA會發生錯誤:「標記為 override 的成員 'ConsoleApplication1.test1.classC.MethodA()' 不能標記為 new 或 virtual」

狀況3:介面(interface)

狀況4:自訂屬性(Custom Attributes)

狀況5:泛型(Generic)


  • abstract [msdn]
    • 抽象類別
      • 抽象類別不能執行個體化。
      • 抽象類別可能會包含抽象方法和存取子。
      • 抽象類別不可能使用 sealed修飾詞來進行修改,這表示此類別不能繼承。
      • 衍生自抽象類別的非抽象類別必須包含所有繼承的抽象方法和存取子之實作。
    • 抽象方法、抽象屬性
      • 抽象方法宣告只允許在抽象類別裡。
      • 因為抽象方法宣告沒有提供實際的實作,因此並沒有方法主體,方法宣告僅以分號做為結束而且簽章 (Signature) 之後沒有大括號 ({ })。例如:
        public abstract void MyMethod();
      • 抽象方法宣告中使用 static 或 virtual 修飾詞是錯誤的。
    • 在靜態屬性上使用 abstract 修飾詞是錯誤的。
    • 可在衍生類別中覆寫抽象繼承屬性,方式是包含使用 override 修飾詞的屬性宣告。
  • virtual [msdn]
    • 不能與 static、abstract, private 或 override 等修飾詞一起使用
    • 在靜態屬性上使用 virtual 修飾詞是錯誤的
  • override [msdn]
    • 提供繼承自基底類別的成員新實作
    • 被覆寫的基底方法必須是 virtual、abstract 或 override
    • 不能變更 virtual 方法的存取範圍。override 方法和 virtual 方法都必須有相同的存取層級修飾詞。
    • 不能使用 new、static、virtual 或 abstract 等修飾詞修改 override 方法
  • new [msdn]
    • 當 new 關鍵字做為修飾詞時,會明確隱藏繼承自基底類別的成員。
    • 同時使用 new 和 override 會發生錯誤,因為這兩個修飾詞在意義上是互斥的。override 為繼承的成員擴充實作 (Implementation) 時,使用 new 可建立具有相同名稱的新成員,並將原來的成員隱藏起來。

參考資料:

 

Conditional Methods

Posted In: . By 卡西卡

效果:用 [Conditional("DEBUG")] 較佳

參考資料:

 

ASP.NET 2.0 新功能

Posted In: . By 卡西卡

  • 預設沒有命名空間
  • CodeBehind 2.0 (CodeBesid)
    • CodeBehind + Partical Class
    • Directive : CodeFile (1.0是 Codebehind)
  • 編譯模型(Compilation Mode)
    • 動態編譯(Dynamic Compilation)
    • 先行編譯(Precompilation)
  • 主版頁面(Master Page)
    • ContentPlaceHolder
    • App_Offline.htm 網站離線
  • 網站巡覽(Web Site Navigation)
    • TreeView
    • Menu
    • SiteMapPath
  • 組態管理API (Configuration API)
    • configuration
      • appSettings
      • connectionStrings
      • mailSettings
    • web.config 加解密
      • DataProtectionConfigurationProvider (DPAIP)
      • RSAProtectedConfigurationProvider (RSA)
      • aspnet_regiis.exe 程式
  • 網站管理
    • Login控制項, 帳號密碼,群組管理、Profile, Web part, 個人化
  • Theme, Style
  • GridView, DetailsView
  • DataSoruce
    • SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource, SiteMapDataSource
  • Cross-Page Posting
    • PostBackUrl 屬性 (Button, LinkButton, ImageButton)
    • PreviousPage
    • @PreviousPageType, @Reference. (VirtualPath)
    • PreviousPage.IsCrossPagePostBack, IsPostBack, IsCallback
  • Classes
    • HtmlHead, HtmlMeta
  • Client Script
    • Focus (WebForm_AutoFocus)
    • <form defaultbutton=... defaultfocus=... />
    • <asp:Bubbon OnClientClick=... />
    • ClientScriptManager [msdn] (Page.ClientScript)
      • RegisterClientScriptBlock [msdn] / IsClientScriptBlockRegistered
        只有這個的script字串不用加<script></script>
      • RegisterClientScriptInclude [msdn] / IsClientScriptIncludeRegistered
      • RegisterOnSubmitStatement [msdn] / IsOnSubmitStatementRegistered
      • RegisterStartupScript [msdn] / IsStartupScriptRegistered
    • Client-Callback (Page.ClientScript)
      • GetCallbackEventReference [msdn]
      • ICallbackEventHandler [msdn] 實作
        • void RaiseCallbackEvent(string eventArgument); 
          處理以控制項為目標的回呼事件。
          • WebForm_InitCallback
          • WebForm_DoCallback
        • string GetCallbackResult(); 
          傳回以控制項為目標之回呼事件的結果。

 

jQuery 筆記

Posted In: . By 卡西卡

參考資料:jQuery API Rerence

選擇器(Selectors) more...

  • $("#div01"); /* document.getElementById("div01"); */
  • $("a[@name]").addClass("bg_green");
    尋找有name屬性的 <a />。
  • $('#div01 > p:first').addClass('red');
    尋找<div id='div01'>下的第一個<p />,first, last, 空就是全部的

屬性(Attributes) more...

  • $("#div01").addClass('red'); /* document.getElementById('div01').className='red'; */
  • $("#div01").css("border", "1px solid black");

其它

  • 在每一行後面加上文字
    $("#div01 ").find("p").each(function(i) {
      $(this).html( $(this).html() + " 加註(" + i + ")" );
    });

事件(Evnets) more...

  • 當mouse移過第一行時底色會變。
    $(document).ready(function() {
    $('#div01 > p:first').hover(
      function() {$(this).addClass("bg_green");},
      function() {$(this).removeClass("bg_green");}
    );
  • 當mouse移過每一行的<a/>時底色會變。
    $("a").hover(
      function() {$(this).parents("p").addClass("bg_red");},
      function() {$(this).parents("p").removeClass("bg_red");
    });
參考:http://www.k99k.com/jQuery_getting_started.html

 

作用:把 http://xxx/2007/10/03.aspx 轉到 http://xxx/list.aspx?y=2007&m=10&d=03

重點:HttpContext.RewritePath

 

URL=http://msdn2.microsoft.com/en-us/library/ms972974.aspx

by Scott Mitchell
Summary: Examines how to perform dynamic URL rewriting with Microsoft ASP.NET. URL rewriting is the process of intercepting an incoming Web request and automatically redirecting it to a different URL. Discusses the various techniques for implementing URL rewriting, and examines real-world scenarios of URL rewriting.

URL=http://www.codeproject.com/aspnet/URLRewriter.asp

By Richard Birkby
Demonstrates the use of regular expression-based URL Rewriting, similar to mod_rewrite with ASP.NET

  • Application_BeginRequest
  • Configuration Section Handlers

 

簡介:The NeatUpload ™ ASP.NET component allows  developers to stream uploaded files to storage (filesystem or database) and allows users to monitor upload progress.

URL=http://www.brettle.com/neatupload
Manual=http://www.brettle.com/NeatUpload-1.2/docs/Manual.html
DEMO=http://klchang3:99/demo/20070929A-Upload/WebForm1.aspx
CODE=D:\Project\_core2\NeatUpload\NeatUpload-1.2.24

  • UploadHttpModule.cs
    IHttpModule
  • ConfigSectionHandler.cs, Config.cs
    IConfigurationSectionHandler
  • DecoratedWorkerRequest.cs
    HttpWorkerRequest
  • Web.config
  • WebForm1.aspx
  • WebForm1.aspx.cs

 

類似的還有……

  • SlickUpload provides scalable ASP.NET upload handling with a rich progress and status information display. SlickUpload intercepts upload requests before ASP.NET can process them, enabling it to stream the files directly to the filesystem or a database with little overhead. For user feedback, SlickUpload provides information that can be displayed to the user in real time using AJAX techniques.
  • 炫Max - [ASP.NET 2.0] 上传进度模块\本模块可以分成两部分,一部分负责监测上传进度,另一部分负责显示。

 

CSS相容

Posted In: , . By 卡西卡

#example1 {
color:#FF0000; /*For Firefox*/
*color:#00FF00; /*For IE7 & IE6*/
_color:#0000FF; /*For IE6*/
/*注意順序*/
}

示範


#example { color: #FF0000; } /* Firefox */
*html #example { color: #00FF00; } /* IE7 & IE6 */
*+html #example { color: #0000FF; } /* IE6 */

示範


參考:http://www.arcbox.cn/zblog/post/36.html

 

字型

Posted In: . By 卡西卡

發光[IE]
<div style='padding:5px;width:100%;
FILTER: glow(color:#FF0000,strength=5);color:#000000;
font-size:12pt; font-weight:bold; font-family:Courier New'>示範 ABC</div></div>

示範 ABC
長度超過時把文字變成[IE]會變成...,[FF]會截掉
<div style='OVERFLOW: hidden; WIDTH: 150px; WHITE-SPACE: nowrap; TEXT-OVERFLOW: ellipsis'>
示範:為程式碼自動產生語法突顯(Syntax Hightlighting) 的功能</div>
為程式碼自動產生語法突顯(Syntax Hightlighting) 的功能
  • 不換行:white-space:nowrap
  • 無裝飾:text-decoration:none;
  • 置中:text-align: center;

 

開張

By 卡西卡

開張