Я подключаюсь к SAP через COM, используя элементы управления ActiveX, перетащенные в форму. В VB6 я пишу:
Private Sub Form_Terminate()
SAPBAPIControl.Connection.Logoff
End Sub
Private Sub SAPLogonControl_Click()
Set SAPBAPIControl.Connection = SAPLogonControl.NewConnection
SAPBAPIControl.Connection.Client = "100"
If SAPBAPIControl.Connection.Logon(0, False) Then
MsgBox SAPBAPIControl.Connection.IsConnected
End If
End Sub
В VB.NET 2010 я пишу:
Public Class MainForm
Private Sub MainForm_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
AxSAPBAPIControl1.Connection.Logoff()
End Sub
Private Sub AxSAPLogonControl1_ClickEvent(sender As Object, e As System.EventArgs) Handles AxSAPLogonControl1.ClickEvent
AxSAPBAPIControl1.Connection = AxSAPLogonControl1.NewConnection()
AxSAPBAPIControl1.Connection.Client = "100"
If AxSAPBAPIControl1.Connection.Logon(0, False) Then
MsgBox(AxSAPBAPIControl1.Connection.IsConnected)
End If
End Sub
End Class
и в итоге:
Единственная ошибка (первый шанс) типа "System.AccessViolationException" в mscorlib.dll aufgetreten. в .Клиент = "100"
VB6 просто работает.
Кто-нибудь знает, как передать объект подключения другому классу в VB.NET?
Спасибо за помощь.