0

我通过 COM 连接到 SAP,使用拖入表单的 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

最后得到:

Eine Ausnahme (erste Chance) des Typs "System.AccessViolationException" ist in mscorlib.dll aufgetreten。在 .Client = "100"

VB6 可以正常工作。

有谁知道如何将连接对象传输到 VB.NET 中的其他类

谢谢您的帮助。

4

1 回答 1

-1

猜测一下:您在旧的 VB6 代码中使用 Set,我认为这会影响对象,VBA 中的链接。你可以尝试类似的东西

AxSAPBAPIControl1 =  AxSAPBAPIControl1.Connection = AxSAPLogonControl1.NewConnection()

我认为 AxSAPBAPIControl1 为您提供了一个连接对象并且不会修改自身 - 所以您正在打开一个从未使用过的新连接,然后使用“未连接”的 AxSAPBAPIControl1。我不知道 SAP-Com,但这种 krad 有时会在 msoffice.interop 中发生。请给我一些反馈。

于 2012-10-12T10:54:48.747 回答