2014年4月28日 星期一

[Oracle] PL/SQL Developer無法載入oci.dll (Could not load oci.dll)的解決辦法

說明:安裝Oracle Client 64 bits版本,使用PL/SQL Developer設定Oracle Home與OCI library後,會出現Could not load oci.dll、OCIDLL forced to oci.dll、LoadLibrary(oci.dll) returned 0的錯誤訊息,這是因為PL/SQL Developer是32 bits的應用程式,無法載入64 bits的oci.dll檔。


找到兩種解法:
1. Oracle官網(http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html)下載Instant Client Downloads for Microsoft Windows (32-bit) -> 解壓縮到某路徑 -> 將PL/SQL Developer(程式->Tools->Preferences)的Oracle Home設為此路徑 -> OCI library設為路徑\oci.dll -> 至系統內容內的環境變數新增一筆TNS_ADMIN = Oracle Client 64 bits放tnsnames.ora的路徑(例: D:\app\xxx\product\11.2.0\client_1\network\admin) -> 再打開PL/SQL Developer即可。

2. 直接安裝Oracle Client 32 bits版本,可與64 bits共存,測試過也可以。


參考資料:
http://www.databaseskill.com/488915/
http://www.oracle.com/technetwork/topics/winsoft-085727.html
http://www.nextofwindows.com/how-to-addedit-environment-variables-in-windows-7/
http://daniel-tu.iteye.com/blog/1276589

2014年4月20日 星期日

[ASP.NET] 在Server端動態加入Client script

說明:想在server端建立client script時,該怎麼做?


作法:
使用Page.ClientScript屬性取得的ClientScriptManager object提供的四個method:
1. RegisterStartupScript(Type type, string key, string script, bool addScriptTags):
    在網頁載入完成後及網頁OnLoad事件觸發前,會執行所加入的script,適用非一開始會用
    到的script。

2. RegisterClientScriptBlock(Type type, string key, string script, bool addScriptTags):
    會將script加入至網頁頂端(<form>下),不保證script可依註冊的順序輸出。

3. RegisterClientScriptInclude(Type type, string key, string url):
    動態加入js 檔的script,在以動態方式加入其他script前就會加入該script,因此可能無法參
    考網頁上的某些項目。

4. RegisterOnSubmitStatement(Type type, string key, string script):
    加入可回應網頁onsubmit 事件的script (ex: confirm),在送出網頁前即執行script,因此可取消送出動作。例:
    ClientScript.RegisterOnSubmitStatement(this.GetType(), "ConfirmSubmit", "return confirm('Do you want to submit the page?')");


參考資料:
http://msdn.microsoft.com/zh-tw/library/system.web.ui.page.clientscript%28v=vs.90%29.aspx
http://msdn.microsoft.com/zh-tw/library/system.web.ui.clientscriptmanager%28v=vs.90%29.aspx
http://msdn.microsoft.com/zh-tw/library/ms178207%28v=vs.100%29.aspx
http://www.dotblogs.com.tw/hatelove/archive/2009/10/28/11325.aspx
http://msdn.microsoft.com/zh-tw/library/7ytf5t7k%28v=vs.100%29.aspx


[C#] 透過WebBrowser控制項與HtmlElement類別自訂填表程式

說明:訂票時可自訂自動填表程式,減少輸入表單時間。


作法:
1. 開啟一winform專案->從工具箱拉WebBrowser進來。
2. 在WebBrowser物件的Url屬性上填上目標網址->選取DocumentCompleted事件。
3. code behind:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
            HtmlDocument hdTest = webBrowser1.Document;
            foreach (HtmlElement he in hdTest.All)
            {
                if (he.Name == "selectStartStation")
                {
                    he.SetAttribute("value", "1");
                }
                else if (he.Name == "selectDestinationStation")
                {
                    he.SetAttribute("value", "7");
                }
                else if (he.Id == "mobileInputRadio")
                {
                    he.InvokeMember("onClick");
                    he.SetAttribute("checked", "radio47");
                }
            }
}


參考資料:
1. 自動訂票程式
http://blog.xuite.net/tzjvetaj/blog/11653752-%E8%87%AA%E8%A3%BD%E8%A8%82%E7%A5%A8%E7%A8%8B%E5%BC%8F
2. 自動填表
http://rritw.com/a/bianchengyuyan/csharp/2011/0919/129332.html
3. radio
http://social.msdn.microsoft.com/Forums/zh-TW/4deeddb1-ea22-4683-9890-4eed2a0ed233/radio-?forum=236