cancel
Showing results for 
Search instead for 
Did you mean: 

error : The server threw an exception at the time of table field creation

Former Member
0 Kudos

Dim oUserFieldsMD As SAPbobsCOM.UserFieldsMD

oUserFieldsMD = OCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)

Try

oUserFieldsMD.TableName = "@PR_PAYCODE"

oUserFieldsMD.Name = "gratuity"

oUserFieldsMD.Description = "gratuity"

oUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Alpha

' oUserFieldsMD.SubType = SAPbobsCOM.BoFldSubTypes.st_Price

oUserFieldsMD.EditSize = 1

'// Adding the Field to the Table

lRetCode = oUserFieldsMD.Add <- error point

'// Check for errors

If lRetCode <> -2035 Then

If lRetCode <> 0 Then

If lRetCode = -1 Then

' chkUDOAfter.SetItemChecked(3, True)

Else

OCompany.GetLastError(lRetCode, sErrMsg)

MsgBox(sErrMsg)

End If

Else

'chkUDOAfter.SetItemChecked(3, True)

' MsgBox("Field: '" & oUserFieldsMD.Name & "' was added successfuly to " & oUserFieldsMD.TableName & " Table")

End If

End If

error : The server threw an exception

i have faced this error from today.

Note : still error ii encounter in first field though it has created that fields.

Note : same code i have used yesterday ..it was working fine.

Any idea .. wht prob it is............

Regards,

Avijit

Accepted Solutions (1)

Accepted Solutions (1)

former_member191896
Active Participant
0 Kudos

Hi Avijit,

Only one meta data object (UserFieldsMD, UserTablesMD etc...) can be alive at any given time.

When you are done with the object, call ReleaseComObject in .NET to make sure that the object is released synchronously.


System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD) 
oUserFieldsMD = Nothing

HTH

Aravind

Edited by: Aravind Gadagottu on Dec 9, 2008 10:03 PM

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Avijit,

Is it different in the environment? The modification of UserFieldsMD works only if no other objects are in memory. Otherwise, exception will throw.

Best regards,

Zhu, Lin

Former Member
0 Kudos

Hi lin,

oUserFieldsMD = OCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)

before going to add i have already declared oUserFieldsMD .

so oUserFieldsMD has in memory....

Former Member
0 Kudos

Hi Avijit,

sure we need the oUserFieldsMD i just meant no other objects in memory. e.g. can assign other objects to null, and do GC.Collect() before your code. But if the whole program is not changed and has been working well before, this is not the cause.

Best regards,

Zhu, Lin