2010-04-02 60 views
1

我們使用他們的SDK爲SAP開發應用程序。 SAP提供了一個用於更改和處理用戶界面中發生的事件的SDK。VB中的動態編程

例如,通過這個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組件組成。

感謝&問候, 拉胡爾·哈因

+0

沒有人知道答案或者沒有解決方案? – 2010-04-03 17:42:35

回答

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) 
+1

你能否請[編輯]解釋爲什麼這段代碼回答這個問題?僅有代碼的答案[不鼓勵](http://meta.stackexchange.com/questions/148272),因爲它們不能解釋爲什麼解決方案有效,這對學習至關重要。 – 2015-03-09 15:47:01