Динамическое программирование в VB - PullRequest
1 голос
/ 02 апреля 2010

Мы разрабатываем приложения для SAP, используя их SDK. 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.

Спасибо и С уважением, Рахул Джайн

Ответы [ 3 ]

0 голосов
/ 05 декабря 2011

Вы можете создать код динамически и скомпилировать его.

Имеют несколько простых интерфейсов для вызова кода проверки и во всех ваших динамических кодах реализуют интерфейс (ы). Таким образом, вы можете динамически загружать сборку, получать класс в качестве интерфейса и напрямую использовать этот интерфейс.

0 голосов
/ 10 апреля 2014
Dim sqlstring1 As String = "Blah Blah Blah SQL here"
Dim Rs SAPbobsCOM.Recordset
Rs = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
rs.doquery(SqlString1)
0 голосов
/ 07 февраля 2011

Я сам этого не делал, но я думаю, что вам действительно придется использовать функции Systems.Runtime.CompilerServices для динамической компиляции сборки, а затем связать ее. Другим решением, если вы используете SQL Server, может быть Воспользуйтесь тем, что вы можете написать код C # или VB.NET в хранимых процедурах. Это может быть способ.

...