2010年1月21日 星期四

先裝.net 再安裝IIS的處理方式

在%WindowsDir%\Microsoft.NET\Framework\vx.y.zzzz\ 目錄下執行
aspnet_regiis.exe -i

2009年9月16日 星期三

在Form_load事件中關閉表單

Q: 在Form_load事件中關閉表單,會造成程式錯誤,該如何解決?

A: 利用 Timer,在 Timer.Tick 事件中關閉表單,程式如下:

' close form since it cannot call me.close in form_load
Private WithEvents Timer1 As New Timer
Private Sub Timer1_Timer() Handles Timer1.Tick
Me.Close()
End Sub

Private Sub Form_Load(ByVal sender, ByVal e As System.EventArgs) Handles Me.Load
MsgBox(objTEJErrorMessage.GetLocalString("EA009_NoAccessRight").ToString)
Timer1.Interval = 100
Timer1.Enabled = True
End Sub

2009年5月26日 星期二

Msg 3623, Level 16 error in SQL Server

今天執行一個 SQL 指令, 產生下列錯誤訊息:
Msg 3623, Level 16, State 1, Procedure sp0_anprcd_growth, Line 123發生網域錯誤。

查了老半天, 原來是數學運算有錯, 天啊. 這是哪一國的錯誤提示?

指令如下:
select a.證券代碼 , a.證券代碼 + ' ' + max(c.證券中文簡稱) as 證券 , POWER(CAST(10 AS FLOAT),SUM(LOG10(1+[報酬率%]))) as [股價漲跌%] , sum(case 日期 when a.EndDate then b.[收盤價(元)] end) as [迄日收盤價(元)] from #anprcd_1 a, view_anprcd b , view_astkind c where a.證券代碼=b.證券代碼 and a.證券代碼=c.證券代碼 and b.日期 >= a.StartDate and b.日期 <= a.EndDate group by a.證券代碼 order by [股價漲跌%] desc

應修正為
POWER(CAST(10 AS FLOAT),SUM(LOG10(1+[報酬率%]/100)))

感謝恩公如下:
http://www.sql-server-performance.com/faq/domain_error_occurred_p1.aspx

2008年12月31日 星期三

如何在.net程式中加密, Java程式中解密(Encode in .net and decode in java)

Q: 如何在.net程式中加密, Java程式中解密?

A:
.net:
Imports System.Web
...
Me.TextBox2.Text = HttpUtility.UrlEncode(Me.TextBox1.Text)


Java:
import java.net.*;
public class EncodeDecode{
public static void main(String[] args) {
System.out.println= URLDecoder.decode(args[0], "UTF-8");
}
}

2008年11月20日 星期四

以 VS 2008 製作 .net framework 2.0 的安裝專案

Q: IDE 採 VS 2008, 但專案以 .net framework 2.0 開發, 但執行安裝檔時卻需安裝 .net framework 3.5, 應如何處理 ?


A: 可依下列步驟解決:
  1. 在方案總管中的安裝專案按滑鼠右鍵, 選取【屬性】, 畫面如下:


  2. 按【必要條件】, 改勾選【.net framework 2.0】

  3. 在【偵測的相依性】下點選【Microsoft .NET Framework】,修改Version屬性為2.0.50727












Keep coding.

2008年9月29日 星期一

全球化(Globalization)與本地化(Localization)作法

Q: .net 程式如何實作多語系功能?

A: 多語系一般分為全球化(Globalization)與本地化(Localization)兩部份.

  1. 全球化(Globalization):將系統介面改成多國語言, 使用者可依喜好選擇他所要的語言.
  2. 本地化(Localization):針對貨幣、日期、數字等格式,依當地的文化顯示適當的格式.

在VS2005中可直接針對畫面設定Localizable屬性=True,並且切換Language屬性,之後即可依所定語言修改畫面,系統會自動產生資源檔;其他訊息也可每一語言自訂一資源檔儲存。

接著在程式中設定語系即可切換不同語系的系統介面,程式如下:

' 設定系統介面,即全球化(Globalization)

Thread.CurrentThread.CurrentUICulture = new CultureInfo(“zh-tw”)

' 設定貨幣、日期、數字等格式,即本地化(Localization)

Thread.CurrentThread.CurrentCulture = new CultureInfo(“zh-tw”)

That's all.

2008年8月20日 星期三

如何使用AJAX Javascript library?

Q: 如何使用AJAX Javascript library, 改變Radio Button的選項 ?

A: AJAX Javascript library 包含一個 $get 函數, 可輕易取得HTML控制項及asp.net server控制項,例如,表單上有一TextBox1控制項,只要在Javascript中使用

$get('TextBox1').value='test';

就可以在client端改變TextBox1控制項的內容了。


我作了一個簡單的例子,改變Radio Button的選項,程式如下:

只要使用$get('RadioButton1').checked = true; 就可以改變Radio Button的選項,很簡單吧!
但是進一步的問題來了, 如果使用Master Page該怎麼辦? 我的解法是在asp.net server端網頁產生上述的function, 秘訣是以 me.RadioButton1.ClientID 取得控制項名稱,加到 $get() 中。
mScript &= vbNewLine & "function setRadioButton(){ "
mScript &= "$get('" & Me.RadioButton1.ClientID & "').checked = true;"
mScript &= "}"
ClientScript.RegisterClientScriptBlock(GetType(XXX), "RadioButtonFunc", mScript)
其中XXX是類別名稱(class name)。