Best Practices - Updating an Existing Object
The purpose of this document is to provide best practices to update an existing object.
The recommended method is the following:
NewInstance.Example:
# In a given class, two properties (MYKEY, MYSTRING) have to be created in MYTABLE if they don't exist
# Otherwise, update MYSTRING property
Local File MYTABLE
Local Instance MY_TABLE Using C_MYTABLE
MY_TABLE = NewInstance C_MYTABLE AllocGroup null
[L]ASTATUS = fmet MY_TABLE.AREAD(this.MYKEY)
If [L]ASTATUS = [V]CST_AOK
MY_TABLE.MYSTRING = this.MYSTRING
[L]ASTATUS = fmet MY_TABLE.AUPDATE()
If [L]ASTATUS<>[V]CST_AOK
[L]ASTATUS = fmet this.ASETERROR("MYSTRING","Error updating record"-this.MYKEY,[V]CST_AERROR)
Endif
Else
# Initialize Instance
FreeGroup MY_TABLE : # Remove error on read
MY_TABLE = NewInstance C_MYTABLE AllocGroup null : # create new instance
[L]ASTATUS = fmet MY_TABLE.AINIT()
If [L]ASTATUS=[V]CST_AOK
MY_TABLE.MYKEY = this.MYKEY
MY_TABLE.MYSTRING = this.MYKEY
[L]ASTATUS = fmet MY_TABLE.AINSERT()
If [L]ASTATUS<>[V]CST_AOK
[L]ASTATUS = fmet this.ASETERROR("MYKEY","Error creating record"-this.MYKEY,[V]CST_AERROR)
Endif
Else
# Error upon table initialization
[L]ASTATUS = fmet this.ASETERROR("MYKEY","Error upon initialization of"-this.MYKEY,[V]CST_AERROR)
Endif
Endif
FreeGroup MY_TABLE