是啊,用到通讯协议WINSOCK,TCP/IP.

解决方案 »

  1.   

    我們公司使用的是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
        
        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