Visual Basic Code Example

The following Visual Basic code example demonstrates sending and receiving scenarios using the Navision Communication Component and the Navision MS-Message Queue bus adapter.

 

The code is as follows:

Option Explicit

Dim WithEvents CC2 As CommunicationComponent

Dim MQBA As MSMQBusAdapter

Dim OutMsg As OutMessage

Dim ReplyMsg As OutMessage

Dim InMsg As InMessage

Dim DOM As DOMDocument30

Private Sub CC2_MessageReceived(InMessage As Object)

  Set InMsg = InMessage

  DOM.Load InMsg.GetStream

  If InMsg.ExpectReply Then

  Set ReplyMsg = InMsg.CreateReply

  If ReplyMsg Is Nothing Then

  MsgBox "Reply message could not be created."

  Else

  DOM.Load FileToSend.Text

  DOM.Save ReplyMsg.GetStream

  ReplyMsg.Send 2000

  End If

  MsgBox "Message received from ComCom2. Reply sent."

  Else

  MsgBox "Message received from ComCom2"

  End If

End Sub

Private Sub Form_Initialize()

  Set CC2 = New CommunicationComponent

  Set MQBA = New MSMQBusAdapter

  Set DOM = New DOMDocument30

End Sub

Private Sub Form_Load()

  On Error Resume Next

  If MQBA Is Nothing Then

  MsgBox "MQBA could not be created."

  Resume

  End If

  If CC2 Is Nothing Then

  MsgBox "ComCom2 could not be created."

  Resume

  End If

  CC2.AddBusAdapter MQBA, 1

End Sub

Private Sub Open_Receive_Q_Click()

  MsgBox "Opening: " + Txt_ReceiveQ.Text

  MQBA.OpenReceiveQueue Txt_ReceiveQ.Text, 1, 0

End Sub

Private Sub Open_ReplyQ_Click()

  MsgBox "Opening: " + Txt_ReplyQ.Text

  MQBA.OpenReplyQueue Txt_ReplyQ.Text, 1, 0

End Sub

Private Sub Open_WriteQ_Click()

  MsgBox "Opening: " + Txt_WriteQ.Text

  MQBA.OpenWriteQueue Txt_WriteQ.Text, 1, 0

End Sub

Private Sub Simple_Send_Click()

  Dim SentCorrectly As Integer

  Set OutMsg = CC2.CreateoutMessage("Message queue://")

  DOM.Load FileToSend.Text

  DOM.Save OutMsg.GetStream

  SentCorrectly = OutMsg.Send(2000)

End Sub

Private Sub Sync_Send_Click()

  Dim SentCorrectly As Integer

  Set OutMsg = CC2.CreateoutMessage("Message queue://")

  DOM.Load FileToSend.Text

  DOM.Save OutMsg.GetStream

  Set InMsg = OutMsg.SendWaitForReply(2000)

  If InMsg Is Nothing Then

  MsgBox "InMessage is empty!"

  Else

  DOM.Load InMsg.GetStream

  DOM.Save ReadFileSave.Text

  InMsg.CommitMessage

  End If

End Sub