Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 2823

Adding UDF in Existing Table on ItemPressed Event

$
0
0

Hi All

 

I am trying to add to 2 UDF's to existing table when i click on add button of user form but i am getting Ref count for this object is higher then 0 error.

The code is as mentioned bellow -


Code for adding field -

Private Sub CreateColumns(ByVal TABLENAME As String)

 

        Try

 

            Dim CreateUDO As New CreateUDO()

 

            If (CreateUDO.UDFExists(oCompany, TABLENAME, "DraftKey") = True) Then

                CreateUDO.AddFieldToTable(oCompany, TABLENAME, "DraftKey", "DraftKey", SAPbobsCOM.BoFieldTypes.db_Numeric, 11)

            End If

 

            If (CreateUDO.UDFExists(oCompany, TABLENAME, "DocStatus") = True) Then

                CreateUDO.AddFieldToTable(oCompany, TABLENAME, "DocStatus", "DocStatus", SAPbobsCOM.BoFieldTypes.db_Alpha, 2)

            End If

 

        Catch ex As Exception

 

        End Try

 

    End Sub

 

Code to call create columns on button click -

If pVal.ActionSuccess = True And pVal.ItemUID = "1" And pVal.FormMode = "3" And pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED Then

 

                        Dim OBJECTID As String = ""

                        Dim OBJECTIDQUERY As String = ""

                        Dim TABLENAME As String = ""

                        Dim ORIGINATORDOCENTRY As Integer

                        Dim ORIGINATORDOCENTRYQUERY As String = ""

                        Dim TABLENAMEQUERY As String = ""

 

                        ORIGINATORDOCENTRYQUERY = "select max (docentry) as DOCENTRY from [@ISA_ORIGIN]"

                        oRecordSet = oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)

                        oRecordSet.DoQuery(ORIGINATORDOCENTRYQUERY)

                        If oRecordSet.RecordCount > 0 Then

                            ORIGINATORDOCENTRY = oRecordSet.Fields.Item("DOCENTRY").Value

                            OBJECTIDQUERY = "SELECT U_OID from [@ISA_ORIGIN] WHERE DOCENTRY = " & ORIGINATORDOCENTRY

                            oRecordSet = oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)

                            oRecordSet.DoQuery(OBJECTIDQUERY)

                            If oRecordSet.RecordCount > 0 Then

                                OBJECTID = oRecordSet.Fields.Item("U_OID").Value

                                TABLENAMEQUERY = "SELECT TABLENAME from [OUDO] WHERE CODE = '" & OBJECTID & "'"

                                oRecordSet = oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)

                                oRecordSet.DoQuery(TABLENAMEQUERY)

                                If oRecordSet.RecordCount > 0 Then

                                    TABLENAME = oRecordSet.Fields.Item("TABLENAME").Value

                                    CreateColumns(TABLENAME)

                                End If

                            End If

                        End If

                    End If


Code To Add Field To Table -

Public Function AddFieldToTable(ByVal oCompany As SAPbobsCOM.Company, ByVal TblName As String, ByVal FldName As [String], ByVal FldDesc As String, ByVal fType As SAPbobsCOM.BoFieldTypes, ByVal fSize As Integer, _

        ByVal subType As SAPbobsCOM.BoFldSubTypes) As Boolean

        Dim oUserField As SAPbobsCOM.UserFieldsMD

        Try

            Dim RetVal As Integer, ErrCode As Integer

            Dim ErrMsg As String = ""

            oUserField = Nothing

            oUserField = DirectCast(oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields), SAPbobsCOM.UserFieldsMD)

            oUserField.TableName = TblName

            oUserField.Name = FldName

            oUserField.Description = FldDesc

            oUserField.Type = fType

            oUserField.SubType = subType

            'oUserField.Size = fSize;

            oUserField.EditSize = fSize

            RetVal = oUserField.Add()

 

            If RetVal <> 0 Then

                oCompany.GetLastError(ErrCode, ErrMsg)

                If RetVal = "-2035" Then

                    Return True

                End If

                Return False

            Else

                Return True

            End If

        Catch ex As Exception

        Finally

            System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserField)

            oUserField = Nothing

            GC.Collect()

        End Try

    End Function


Viewing all articles
Browse latest Browse all 2823

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>