2008年8月17日 星期日

reason 3028

FTP時發生錯誤訊息,並只傳部分資料:
Unable to convert data from CCSID 937 to CCSID 950: reason 3028.

有DBCS(雙位元組字元集)字元時因0E/0F不成對,傳到該筆資料就會因無法轉換而終止。

2008年8月14日 星期四

字串連接

MySQL/Oracle例:
SELECT CONCAT(last_name,first_name) FROM person

Oracle/DB2例:
SELECT last_name ││first_name FROM person

SQL Server例:
SELECT last_name + first_name FROM person

字串替換

語法:
Replace([欄位] , '替換前字串' , '替換後字串')
Update [資料表] Set [欄位] = Replace([欄位] , '替換前字串' , '替換後字串') Where [條件式]

例:
將字串欄位中含有'abcd'替換成'1234'
UPDATE testtable SET field1 = REPLACE(field1,'abcd','1234')

2008年8月12日 星期二

replace() 遇到NULL時發生錯誤

replace 遇到 Null 值時會發生錯誤,錯誤訊息:Null 的使用不正確: 'replace'


原程式碼:
out = out & replace(asrs.Fields(i).Value,","," ") & ","


改為:
If Not IsNull(as400rs.Fields(i).Value) Then
out = out & replace(asrs.Fields(i).Value,","," ") & ","
Else
out = out & " " & ","
End If

2008年7月7日 星期一

SQL Command Time

在Excel中使用ADO連線至SQL Server,是常用且簡單的報表製作方式。

最近有遇到一個前輩做的Excel檔案,是可供使用者輸入日期區間後,查詢期間的交易統計表。

越來越多使用者跟我反應常常會出現『逾時終止』的錯誤訊息,我測試計算了一下出現錯誤訊息的時間都為30秒。



上網查了一下資料,原來CommandTimeout(SQL語法執行的時間)預設值為30秒,解決方法就是給他設長一點啦。

Dim cn As New ADODB.Connection
Dim recset As ADODB.Recordset
Dim connectstr As Stringconnectstr = "Driver={SQL Server};Server=local;Network=DBMSSOCN;Database=northwind;Uid=sa;Pwd=sa;"
cn.Open connectstrOn Error GoTo err_rtn
cn.CommandTimeout = 600 '秒
Set recset = New ADODB.Recordset
recset.Open sour, cn

2008年6月16日 星期一

Perl 取系統日期

# 取得秒, 分, 時, 日, 月, 年
($sec,$min,$hour,$day,$mon,$year)=localtime(time);

# 月比實際少一, 所以加 1
if (length ($mon) == 1) {$mon = '0'.$mon;}
$mon++;

# 判斷是否為個位數, 若是則在前面補 0
if (length ($mon) == 1) {$mon = '0'.$mon;}
if (length ($day) == 1) {$day = '0'.$day;}
if (length ($hour) == 1) {$hour = '0'.$hour;}
if (length ($min) == 1) {$min = '0'.$min;}
if (length ($sec) == 1) {$sec = '0'.$sec;}

# 年比實際西元年少 1900, 所以加上 1900
$year += 1900;

# 組合成完整的時間
$date = "$year$mon$day";
$time = "$hour$min$sec";
$alltime = " $date/$time";
#年初、年底
$s_date = ($year-11)."$mon"."01";
$e_date = ($year-11)."$mon"."31";

2008年6月3日 星期二

SQL語法取當天日期Getdate()

  1. YYYY/MM/DD: Convert(varchar(10),Getdate(),111)
  2. YYYYMMDD: Convert(varchar(10),Getdate(),112)
  3. HH:MM:SS: Convert(varchar(8),Getdate(),108)
  4. HH:MM:SS:mmm: Convert(varchar(12),Getdate(),114)
  5. HHMMSS: Replace(Convert(varchar(8),Getdate(),108),':','')
  6. HHMMSSmmm: Replace(Convert(varchar(12),Getdate(),114),':','')
  7. YYYY/MM/DD HH:MM:SS: Replace(Convert(varchar(30),Getdate(),120),'-','/')
  8. YYYY/MM/DD HH:MM:SS: Replace(Convert(varchar(30),Getdate(),121),'-','/')
  9. YYYY/MM/DD HH:MM:SS: Convert(varchar(10),Getdate(),111) + Space(1) + Convert(varchar(8),Getdate(),108)
  10. YYYYMMDDHHMMSS: Convert(varchar(10),Getdate(),112) + Replace(Convert(varchar(8),Getdate(),108),':','')