2010年11月26日 星期五

TextBox 千分位自動加上逗號

畫面上新增一個 AMT_txt (Textbox)
Page_Load加入 AMT_txt.Attributes("onkeyup") = "trans_amt('" + AMT_txt.ClientID + "');" 
以下為JavaScript 注意JavaScript的replace只取代第一個相同的字串 必須加上/\ /g
function trans_amt(Name) {
var amt = document.getElementById(Name).value;
var amt_length = amt;
amt = amt.replace(/\,/g, "");
re = /(\d{1,3})(?=(\d{3})+(?:$|\D))/g;
n1 = amt.replace(re, "$1,");
document.getElementById(Name).value = n1;
//var sel = document.selection.createRange();
//sel.moveStart('character', amt_length.length);
//sel.collapse(true);
//sel.select();
}

2010年11月25日 星期四

UserControl 動態控制 Page面頁元件

可使用委派和 AddressOf 運算子解決此問題
1.UserControl (Pager1.ascx)
Partial Class Pager1
Public Event btnClick As EventHandler
Protected Sub btnLAS_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLAS.Click
'(此事件控制Page頁面元件)
RaiseEvent btnClick(sender, e)
End Sub
End Class
2.Page (bb.aspx.vb)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
AddHandler Me.Pager1.btnClick, AddressOf pager1_btnClick
End Sub
Private Sub pager1_btnClick(ByVal sender As Object, ByVal e As EventArgs)
'(控制Page頁面的code寫在這裡)
'page_index.Value = TryCast(Pager1.FindControl("Label1"), Label).Text - 1
End Sub

2010年11月9日 星期二

ASP.NET 讀寫dbf 檔

新版的ODBC driver好像不支援了(不確定) 因此我改用oledb 不過記得裝一個檔案叫 vfpoledb.exe 否則會發生錯誤
Dim ora_Conn As New OleDbConnection
Dim dt As New DataTable
Dim connStr As String = "provider=vfpoledb;data Source=c:\"
ora_Conn.ConnectionString = connStr
ora_Conn.Open()
Dim sql As String
sql = "insert into R991025.dbf(SUPPLIER,SUPPMAN,ITEMNO,KINDX,GRADE,PCS,QTYOK,PACKOK,TRN_WAY)"
sql = sql + " VALUES('1','2','3','4','5',6,7,8,'9')"
'sql = "select * from R991025.dbf"
Dim ora_cmd As OleDbCommand = New OleDbCommand(sql, ora_Conn)
ora_cmd = New OleDbCommand(sql, ora_Conn)
ora_cmd.ExecuteNonQuery()
'dt.Load(ora_cmd.ExecuteReader)
Me.GridView1.DataSource = dt
Me.GridView1.DataBind()

2010年11月8日 星期一

ASP.NET換行符號

C# : (包在字串裡)
msg = "test" + "\r\n";
VB.NET :
msg = "test" +vbcrlf

2010年11月5日 星期五

ASP.NET 民國年轉換函數

民國年轉換函數(支援100年) GOOGLE來的,作者不詳... ChangeTaiwanCalendar(DateTime.Now)
Public Shared Function ChangeTaiwanCalendar(ByVal x As DateTime, ByVal format As String) As String
Dim now As DateTime = x Dim tc As New Globalization.TaiwanCalendar() Dim regex As Regex = New System.Text.RegularExpressions.Regex("[yY]+") format = regex.Replace(format, tc.GetYear(x).ToString("000")) Return x.ToString(format) End Function

ASP.NET TextBox 英文自動轉大寫

在TextBox加入此樣式即可
不過要注意如果有寫入資料庫 還是得再轉換一次大寫
style="TEXT-TRANSFORM: uppercase"

SQL SERVER 民國年轉換函數(支援100年)

DECLARE @Format VARCHAR(9)
SET @Format = 'yyy/mm/dd'
SELECT [dbo].[udfTaiwanDateFormat] ([ACCT_DATE], @Format) as 'DATE'

使用jquery.ui.datepicker 判斷自行輸入格式是否符合

If IsDate(chk_cash_date_1.Text) <> True Then
Label4.Text = "日期格式錯誤!"
Exit Sub
End If
Dim date_list() As String
date_list = chk_cash_date_1.Text.Split("/")
If date_list.Count <> 3 Then
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "date_error1", "alert('日期格式錯誤!');", True)
Exit Sub
End If
強制改成 yyyy/MM/dd 格式
Dim year_tmp As String
Dim month_tmp As String
Dim date_tmp As String
year_tmp = String.Format("{0:0000}", Convert.ToInt16(date_list(0)))
month_tmp = String.Format("{0:00}", Convert.ToInt16(date_list(1)))
date_tmp = String.Format("{0:00}", Convert.ToInt16(date_list(2)))
Dim merg_date As String = year_tmp + "/" + month_tmp + "/" + date_tmp

ASP.NET 尋找上個月底日期(VB)

ASP.NET 尋找上個月底日期(VB)
DateAdd("D", -1, Year(DateTime.Now) & "/" & Month(DateTime.Now) & "/1")

SQL SERVER 計算昨天日期

SQL SERVER 計算昨天日期
SELECT DATEADD(dd, DATEDIFF(dd,1,getdate()), 0)

SQL SERVER 多筆子查詢

在SQL SERVER裡當子查詢大於一筆資料會報錯 加入下面語法可使子查詢的多筆內容用逗號附加上去
SELECT [Object_Id]
,[Tool_No]
,[Serial_No]
,[Tool_Revision]
,[Sor_No]
,(SELECT [Serial_No] + ',' FROM [ACF_Tooling].[dbo].[Main] WHERE [Tool_Name] = 'BOF' FOR XML PATH('')) as Tool_Name
FROM [ACF_Tooling].[dbo].[Main]