Динамическое программирование в VB

Мы разрабатываем приложения для 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-компонентов.

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


person Rahul Jain    schedule 02.04.2010    source источник
comment
никто не знает ответа или решения нет???   -  person Rahul Jain    schedule 03.04.2010


Ответы (3)


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

person Steve Massing    schedule 07.02.2011

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

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

person Saravana    schedule 05.12.2011

person    schedule
comment
Не могли бы вы изменить объяснение того, почему этот код отвечает на вопрос? Ответы, содержащие только код, не приветствуются, поскольку они не объясняют, почему решение работает, что крайне важно для обучения. - person Duncan Jones; 09.03.2015