公司每當有新人到任,到職前的一週(左右),人資部門都會發公告給相關部門(總務/財務/MIS)等,請各單位事先備妥新人會用到的設備,以及作好系統上的設定(比如email 帳號開立)

前兩天有一位經理,在星期一早上報到,到了第二天下午,跑來問人資,他有新電腦可用嗎?

處理的過程就不細述了,總而言之,負責的MIS,推託"事先不知情",然後匆忙地整理好一台筆電,交差了事;事後,MIS 主管,去找人資吵了一頓,說人資為什麼沒發mail 通知,而HR 反擊你眼睛有問題嗎?我在幾月幾號就發信了,不信你看我的寄件備份...

這種事也不是第一次了,雖然頻率不高,但偶爾一次,就足以造成部門間的衝突及對立;如果每次都是吵架了事,事情永遠無法解決。

既然公司有導入Workflow 系統,怎麼能不拿來利用呢?於是我主動去找人資,了解整個新人報到流程,然後花點時間,開發了一個電子表單,以後新人來,只要人資在HRMS 裡建立新進員工基本資料,就會自動觸發流程,提醒相關單位淮備及會簽,同時,系統自動建立email 帳號,以及相關系統設定,人工作業也免了;最後,憑系統Log,有憑有據,再加上定時發出的push mail,誰也無法再藉口說,沒看到信,不知情。

這是一個流程改善的例子;事實上,只要有心觀察,我們一定都可以找出平日工作流程上的問題,並加以改善;比起一昧地接招(使用者的需求),自己想的idea, 也會有趣/有成就感許多。

cbw0731 發表在 痞客邦 留言(0) 人氣()

大概沒有人記得所有DB(SQL/Oracle/DB2/...)的connection string 吧? 這個網站只能說佛心來著, 不用再到處去找sample code, 看這裡就對了!

http://www.connectionstrings.com/

 

cbw0731 發表在 痞客邦 留言(0) 人氣()

http://www.ncis.com.tw/ncis_bbs/redirect.php?tid=893&goto=lastpost

Option Explicit

Private Sub Command1_Click()
  Dim obj As Object
  Dim items As Object
  Dim item As Object

  Set obj = GetObject( _
            "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

  Set items = obj.ExecQuery("Select * from Win32_SerialPort")

  For Each item In items
     Print "COMPORT: " & item.DeviceID
  Next
End Sub

cbw0731 發表在 痞客邦 留言(0) 人氣()

假設我們有一個文字檔, 要寫入 table: StList 中, 且 StList schema 如下:

CREATE TABLE StList
(
 StFName varchar(50) NOT NULL,
 StLName varchar(50) NOT NULL,
 StEmail varchar(100) NOT NULL
)
go

 

文字檔型態一:

Kelly,Reynold,kelly@reynold.com
John,Smith,bill@smith.com
Sara,Parker,sara@parker.com

這個例子較簡單, 因此我們直接用下述語法:

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = ',')

 

文字檔型態二:

"Kelly","Reynold","kelly@reynold.com"
"John","Smith","bill@smith.com"
"Sara","Parker","Parker"

這個例子就比較麻煩了, 若直接用以下語法,

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = '","')

因為每個欄位的資料前後都有 double quote, 若直接用 "," 分開, 將造成"最前面"和"最後面"的double quote 拿不掉, 也就是會變成:

"Kelly Reynold kelly@reynold.com"
"John Smith bill@smith.com"
"Sara Parker Parker"

可改用以下程式處理:

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = '","')

UPDATE StList SET StFName = SUBSTRING(StFName,2,DATALENGTH(StFName)-1)    -- "KellyKelly

UPDATE StList SET StEmail = SUBSTRING(StFName,1,DATALENGTH(StEmail )-1)    -- kelly@reynold.com"kelly@reynold.com

 

 

cbw0731 發表在 痞客邦 留言(0) 人氣()

T-SQL 裡的 Error Handle 比較少人提到, 其實在撰寫 stored procedure 可以幫助除錯, 也可以自訂回饋給前端的訊息.

基本語法:

BEGIN TRY

    :

END TRY

BEGIN CATCH

    :

END CATCH

.TRY 及 CATCH 區塊必須搭配使用。

.TRY 及 CATCH 區塊間不可有其他的 T-SQL

.在 TRY 區塊間的 T-SQL,若發生錯誤,則會跳至 CATCH 區塊執行,然後中斷;若沒有錯誤,則會跳過 CATCH 區塊,然後繼續其後的敍述。

 

錯誤處理, 可用函數:

int ERROR_LINE();    --傳回發生錯誤的行數

BEGIN CATCH

PRINT N'Error Line: ' + CAST(ERROR_LINE() AS nvarchar(100));

END CATCH

 

int ERROR_NUMBER();    --傳回系統錯誤代號

(早期的 MS SQL 版本,可用 @@ERROR)

BEGIN CATCH

IF ERROR_NUMBER() = 220   

PRINT N'The number is too large to carry';  

END CATCH

 

nvarchar ERROR_MESSAGE();    --傳回系統錯誤訊息

 

int ERROR_SEVERITY();

ps: 這並非 Error 的嚴重程度, 只是標明 Error 的分類而已.

 

最後, 擷取自 MSDN 上的範例:

USE AdventureWorks;
GO

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO


參考資料:

http://www.functionx.com/sqlserver/Lesson09.htm

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/tsqlref9/html/50228f2f-6949-4d2e-8e43-fad11bf973ab.htm

cbw0731 發表在 痞客邦 留言(0) 人氣()

1 2345