我們公司使用的是Microsoft Queue,然後進行二次開發 下面的代碼是1/1000的内容,可能看不懂,我要說的是很複雜!!! Private Sub Main() On Error GoTo ErrorHandleDim SaveQueueName As String Dim SaveQueueLength As Long Dim SaveMessage As String Dim CurMessage As String Dim strTemp As String Dim I_Index As Long Dim tmpInt As IntegerI_Index = 1'顯示訊息視窗 frmMIRLWIPAdapter.Show
下面的代碼是1/1000的内容,可能看不懂,我要說的是很複雜!!!
Private Sub Main()
On Error GoTo ErrorHandleDim SaveQueueName As String
Dim SaveQueueLength As Long
Dim SaveMessage As String
Dim CurMessage As String
Dim strTemp As String
Dim I_Index As Long
Dim tmpInt As IntegerI_Index = 1'顯示訊息視窗
frmMIRLWIPAdapter.Show
frmMIRLWIPAdapter.txtModule = "ERPINVQty"
frmMIRLWIPAdapter.lstMessage.Clear'建立Local Data的連線
frmMIRLWIPAdapter.lstMessage.AddItem "Connect Local DB..."
DoEvents
strTemp = gSystemInfo.funAppPath & "\LocalData.mdb"
Set LocalDB = OpenDatabase(strTemp)'擷取MIRLWIP連線方式
frmMIRLWIPAdapter.lstMessage.AddItem "Get Connection Config..."
DoEvents
gSystemInfo.GerDBConnect'建立基本主檔的連線
frmMIRLWIPAdapter.lstMessage.AddItem "Connect Basis DB..."
DoEvents
gSystemInfo.CreateBasisConnection
'建立 WIP 的連線
frmMIRLWIPAdapter.lstMessage.AddItem "Connect WIP DB..."
DoEvents
gSystemInfo.CreateWipConnection
'建立MQ連線
frmMIRLWIPAdapter.lstMessage.AddItem "Connect MQ Server..."
DoEvents
Call MQSeriesObject.MQConnect
MQSeriesObject.ConnectionValue = gSystemInfo.cnnBasis
'擷取QUEUE Name
SaveQueueName = GetQueueName("ERPINVQty")
SaveQueueLength = GetQueueLength("ERPINVQty")
frmMIRLWIPAdapter.lstMessage.AddItem "Get MQ Queue Name: " & SaveQueueName
DoEvents
'擷取訊息
Do While SaveMessage <> "END"
SaveMessage = MQSeriesObject.MQGetMessage(SaveQueueName, SaveQueueLength) '每一封訊息(一封訊息中可以有換行資料)
SaveMessage = Trim(Replace(SaveMessage, Chr(10), ""))
SaveMessage = Trim(Replace(SaveMessage, Chr(0), "")) If SaveMessage <> "END" Then
Do While InStr(SaveMessage, "|") > 0
'檢查是否有換行
tmpInt = InStr(SaveMessage, Chr(13))
If tmpInt > 0 Then
'取出換行前的一段資料
CurMessage = Left(SaveMessage, tmpInt - 1)
Else
CurMessage = SaveMessage
End If
errorLog = ""
errorMode = ""
'根據MQ字串轉入MIRLWIP系統
'訊息解譯
Set rsItem = MsgDecoder(CurMessage)
'轉換為 ERPINVQty 資料表對應欄位資料
If TransferToERPINVData(rsItem) <> 0 Then
errorMode = "Trans"
Else
If EditINVQty() <> 0 Then
errorMode = "Edit"
End If
End If
If errorMode <> "" Then
'錯誤紀錄寫入 error Log table
Call ErrorLogOutput("ERPINVQty", errorMode, errorLog, CurMessage)
End If
frmMIRLWIPAdapter.lstMessage.AddItem "[" & I_Index & "]" & CurMessage & Chr(13)
DoEvents
If tmpInt > 0 Then
SaveMessage = Mid(SaveMessage, tmpInt + 1, Len(SaveMessage) - tmpInt)
Else
SaveMessage = ""
End If
Loop
I_Index = I_Index + 1
End If
Loop
'關閉Local連線
Set LocalDB = Nothing
'關閉MQ 連線
Call MQSeriesObject.MQDisConnect
Set MQSeriesObject = Nothing
'關閉系統所有連線
Call gSystemInfo.CloseConnection(gSystemInfo.cnnBasis)
Call gSystemInfo.CloseConnection(gSystemInfo.cnnWIP)
Set gSystemInfo = Nothing
Unload frmMIRLWIPAdapter
Exit SubErrorHandle:
If Err.Number <> 0 Then
errorLog = Err.Description
'Err.Raise 14521, , Err.Description, Err.HelpFile, Err.HelpContext Else '無法處理之錯誤
errorLog = "ERPINVQty 主程式失敗!"
End If
errorMode = "Main"
'錯誤紀錄寫入 error Log table
Call ErrorLogOutput("ERPINVQty", errorMode, errorLog)
End Sub