VB中的动态编程

时间:2010-04-02 12:06:34

标签: vb.net dynamic sapb1

我们使用SDK开发SAP应用程序。 SAP提供了一个SDK,用于更改和处理用户界面中发生的事件。

例如,使用此SDK,我们可以点击按钮并在点击上执行某些操作。这种编程可以用VB或C#完成。

这也可用于在预先存在的表单上创建新字段。我们开发了一个特定的应用程序,允许用户将新字段所需的定义存储在数据库表中,并在运行时创建字段。

到目前为止,这很好。我们现在需要的是用户应该能够在数据库中存储该字段的验证代码,并且应该在运行时执行相同的代码。

以下是此类事件的示例:

Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
    Dim oForm As SAPbouiCOM.Form
    If pVal.FormTypeEx = "ACC_QPLAN" Then
        If pVal.EventType = SAPbouiCOM.BoEventTypes.et_LOST_FOCUS And pVal.BeforeAction = False Then
            oProdRec.ItemPressEvent(pVal)
        End If
    End If
End Sub

Public Sub ItemPressEvent(ByRef pVal As SAPbouiCOM.ItemEvent)
    Dim oForm As SAPbouiCOM.Form

    oForm = oSuyash.SBO_Application.Forms.GetForm(pVal.FormTypeEx, pVal.FormTypeCount)
    If pVal.EventType = SAPbouiCOM.BoEventTypes.et_LOST_FOCUS And pVal.BeforeAction = False Then
        If pVal.ItemUID = "AC_TXT5" Then
            Dim CardCode, ItemCode As String

            ItemCode = oForm.Items.Item("AC_TXT2").Specific.Value
            CardCode = oForm.Items.Item("AC_TXT0").Specific.Value

            UpdateQty(oForm, CardCode, ItemCode)
        End If
    End If
End Sub

因此,在这种情况下我们需要将ItemPressEvent中给出的代码存储在数据库中,并在运行时执行它。

我知道这不是直截了当的事情。但我认为必须有一些方法来完成这些事情。

SDK由COM组件组成。

谢谢&问候, Rahul Jain

3 个答案:

答案 0 :(得分:0)

我自己没有这样做,但我认为你将不得不实际使用Systems.Runtime.CompilerServices函数来动态编译程序集然后将其链接进来。如果你使用SQL Server,可能会有另一种解决方案要利用您可以在存储过程中编写C#或VB.NET代码的事实。这可能是一种方式。

答案 1 :(得分:0)

Dim sqlstring1 As String = "Blah Blah Blah SQL here"
Dim Rs SAPbobsCOM.Recordset
Rs = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
rs.doquery(SqlString1)

答案 2 :(得分:-1)

您可以动态创建代码并进行编译..

有一些简单的接口来调用验证代码,在所有动态代码中,实现接口。这样,您可以动态加载程序集并将类作为接口获取并直接使用该接口。