Vb.net SAP B1-选项按钮-“无法将对象系统.String强制转换为类型SAPbouiCOM.Item”错误
我正在Visual Studio中为SAP B1中的附加组件编写vb.net代码。现在,我想选择一个选项按钮,根据用户的选择,我想获取这个值并将其发送到另一个类中的另一个函数。我想在用户按下OK按钮后立即执行此操作,因此我尝试在事件中执行此操作 我为创建选项按钮编写的代码:Vb.net SAP B1-选项按钮-“无法将对象系统.String强制转换为类型SAPbouiCOM.Item”错误,vb.net,casting,sapb1,Vb.net,Casting,Sapb1,我正在Visual Studio中为SAP B1中的附加组件编写vb.net代码。现在,我想选择一个选项按钮,根据用户的选择,我想获取这个值并将其发送到另一个类中的另一个函数。我想在用户按下OK按钮后立即执行此操作,因此我尝试在事件中执行此操作 我为创建选项按钮编写的代码: Dim optBtn As SAPbouiCOM.OptionBtn 'Dim oFrm As SAPbouiCOM.Form Dim oUserdatasource As SAPbouiCO
Dim optBtn As SAPbouiCOM.OptionBtn
'Dim oFrm As SAPbouiCOM.Form
Dim oUserdatasource As SAPbouiCOM.UserDataSource
oUserdatasource = oform2.DataSources.UserDataSources.Add("BD_resDS", SAPbouiCOM.BoDataType.dt_SHORT_TEXT, 1)
'Option 1
oItem = oform2.Items.Add("BD_rbRes", SAPbouiCOM.BoFormItemTypes.it_OPTION_BUTTON)
oItem.Left = 155
oItem.Top = 10
oItem.Height = 16
oItem.Width = 55
optBtn = oItem.Specific
optBtn.Caption = "Cheque"
optBtn.DataBind.SetBound(True, , "BD_resDS")
'Option 2
oItem = oform2.Items.Add("BD_rbPost", SAPbouiCOM.BoFormItemTypes.it_OPTION_BUTTON)
oItem.Left = 220
oItem.Top = 10
oItem.Height = 16
oItem.Width = 55
optBtn = oItem.Specific
optBtn.Caption = "Cash"
oItem.Visible = True
optBtn = oItem.Specific
optBtn.GroupWith("BD_rbRes")
optBtn.DataBind.SetBound(True, , "BD_resDS")
'Option 3
oItem = oform2.Items.Add("BD_rbPost2", SAPbouiCOM.BoFormItemTypes.it_OPTION_BUTTON)
oItem.Left = 280
oItem.Top = 10
oItem.Height = 16
oItem.Width = 75
optBtn = oItem.Specific
optBtn.Caption = "Credit Card"
oItem.Visible = True
optBtn = oItem.Specific
optBtn.GroupWith("BD_rbPost")
我在事件中编写的代码如下:
Public Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
Try
Dim fInv As SAPbouiCOM.Form
Dim omethod As SAPbouiCOM.Item
Dim opaymeth As SAPbouiCOM.OptionBtn
Dim paymeth As String
'If pVal.ItemUID = "1" And pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED And pVal.BeforeAction = True And pVal.ActionSuccess = False And pVal.FormUID = "60006" Then
'End If
'Events of the Blanket Agreement form
If (FormUID = "Choose") Then
If (pVal.BeforeAction = False) Then
' Click on Add Row
If (pVal.ItemUID = "1") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED) Then
fInv = SBO_Application.Forms.Item(FormUID)
omethod = fInv.DataSources.UserDataSources.Item("BD_resDS").ValueEx
opaymeth = omethod.Specific
paymeth = opaymeth.Value.ToString()
SBO_Application.MessageBox(paymeth)
If paymeth <> "" And paymeth <> Nothing Then
Dim paym As New payment(SBO_Application, oCompany)
paym.pay(paymeth)
End If
End If
End If
End If
Catch ex As Exception
'SBO_Application.MessageBox(er.Message)
SBO_Application.MessageBox(ex.Message)
End Try
End Sub
现在,我在SAP B1中遇到的错误是:
无法将对象“System.String”强制转换为类型“SAPbouiCOM.Item”
.ValueEx似乎返回字符串,因此我想您只需要删除它
omethod = fInv.DataSources.UserDataSources.Item("BD_resDS")
另一个很好的例子,为什么你应该总是打开选项严格 您已声明
尺寸测量方法为SAPbouiCOM.项目
并将其指定给字符串值
omethod=fInv.DataSources.UserDataSources.ItemBD\u resDS.ValueEx
声明字符串变量并向其赋值,如下所示
作为字符串的Dim tmpval=
tmpval=fInv.DataSources.UserDataSources.ItemBD\u resDS.ValueEx
尝试此操作正如您所说,我删除了.ValueEx,现在出现了错误消息:“无法将类型为'SAPbouiCOM.UserDataSourceClass'的COM对象强制转换为接口类型'SAPbouiCOM.Item'。此操作失败,因为对IID为“{97702124-F229-4A00-FC584049EF9}”的接口的COM组件的QueryInterface调用因以下错误而失败:不支持来自HRESULT的此类接口异常:0x80004002 E_NOINTERFACE。”知道这是怎么回事吗?而且我也不知道在选项严格打开后如何更改我的代码,所以我会让它关闭
omethod = fInv.DataSources.UserDataSources.Item("BD_resDS")