Skip to content

REMOVE_REC_ROW ​

The command REMOVE_REC_ROW removes the row rowid in an attribute of type RECORD.

Syntax ​

leo-grammar
CC "Core" REMOVE_REC_ROW objid:idValueattrid:idValuerowid:id

#-->RESULT ecode:intValue

Parameters ​

  • objid (idValue) - specifies the ID of the instance in which the change should take place.
  • attrid (intValue) - specifies any attribute of type RECORD which is present in the given instance.
  • rowid (intValue) - specifies a record row ID which must exist in the given attribute.

Returns ​

  • ecode (intValue) - Contains the error code or is 0 in case of success.

Details ​

See Also ​

ADD_REC_ROW
MOVE_RECORD_ROW
GET_REC_ATTR_ROW_ID
GET_REC_CLASS_ID
GET_REC_ATTR_ROW_COUNT
GET_OWNER_OBJ_OF_REC_ROW
GET_ALL_REC_ATTR_ROW_IDS
GET_RECORD_MULTIPLICITY

Examples ​

Example 1 ​

asc
# get all selected objects
CC "Modeling" GET_SELECTED
IF (objids = "")
{
   CC "AdoScript" ERRORBOX "Select an instance first!"
   EXIT
}

# from the list of selected objects, extract the first objectid
SET firstselected:(token(objids,0," "))

# now get the classes of the connected instances
CC "Core" GET_CLASS_ID objid:(VAL firstselected)

# get all attributes of the selected class
CC "Core" GET_ALL_ATTRS classid:(classid)

# get types of attributes
FOR id in:(attrids)
{
  CC "Core" GET_ATTR_TYPE attrid:(VAL id)

# check for type "RECORD"
  IF ((attrtype) = "RECORD")
  {
# get attribute name
    CC "Core" GET_ATTR_NAME attrid:(VAL id)

# here we get the row count
    CC "Core" GET_REC_ATTR_ROW_COUNT objid:(VAL firstselected) attrid:(VAL id)

    IF ((ecode)!=0)
    {
      CC "AdoScript" ERRORBOX ("An error occured in attribute "+(attrname))
      EXIT
    }
    
# show initial row count
    CC "AdoScript" INFOBOX ("Initial row count of attribute \""+(attrname)+"\": "+(STR count))

# get first row id (index = 1)
    CC "Core" GET_REC_ATTR_ROW_ID objid:(VAL firstselected) attrid:(VAL id) index:1

# remove a row
    CC "Core" REMOVE_REC_ROW objid:(VAL firstselected) attrid:(VAL id) rowid:(rowid)

    IF ((ecode)!=0)
    {
      CC "AdoScript" ERRORBOX ("Error removing a row from attribute \""+(attrname)+"\"")
      EXIT
    }

# get new row count
    CC "Core" GET_REC_ATTR_ROW_COUNT objid:(VAL firstselected) attrid:(VAL id)
    
# show new row count
    CC "AdoScript" INFOBOX ("Removed one row. New count: "+(STR count))
    EXIT
  }
}
CC "AdoScript" ERRORBOX ("No attributes of type RECORD found!")

Preparing:

  • Get selected objects
  • pick first selected
  • get its class id
  • get all attributes of that class
  • loop for all attributes

Interesting:

  • check for attribute type RECORD

  • get attribute name

  • GET_REC_ATTR_ROW_COUNT

  • check if successful

  • show initial row count

  • REMOVE_REC_ROW

  • check if successful

  • GET_REC_ATTR_ROW_COUNT

  • show new row count and exit

  • if no attributes of type RECORD were found: Report error

Example 2 ​

All record operations

asc
# get all selected objects
CC "Modeling" GET_SELECTED
IF (objids = "")
{
   CC "AdoScript" ERRORBOX "Select an instance first!"
   EXIT
}

# from the list of selected objects, extract the first objectid
SET firstselected:(token(objids,0," "))

# now get the classes of the connected instances
CC "Core" GET_CLASS_ID objid:(VAL firstselected)

# get all attributes of the selected class
CC "Core" GET_ALL_ATTRS classid:(classid)

# get types of attributes
FOR id in:(attrids)
{
  CC "Core" GET_ATTR_TYPE attrid:(VAL id)

# check for type "RECORD"
  IF ((attrtype) = "RECORD")
  {
# get attribute name
    CC "Core" GET_ATTR_NAME attrid:(VAL id)

# here we get the row count
    CC "Core" GET_REC_ATTR_ROW_COUNT objid:(VAL firstselected) attrid:(VAL id)

# show actual row count
    CC "AdoScript" INFOBOX ("Initial row count: "+(STR count)+". Now adding one...")

# no add one row
    CC "Core" ADD_REC_ROW objid:(VAL firstselected) attrid:(VAL id)

# again get row count
    CC "Core" GET_REC_ATTR_ROW_COUNT objid:(VAL firstselected) attrid:(VAL id)

# again show actual row count
    CC "AdoScript" INFOBOX ("New actual row count: "+(STR count))

# now we get the row id of added row
    CC "Core" GET_REC_ATTR_ROW_ID objid:(VAL firstselected) attrid:(VAL id) index:(count)
    CC "AdoScript" INFOBOX ("Position "+(STR count)+": RowID: "+(STR rowid))

# get record class id
    CC "Core" GET_REC_CLASS_ID attrid:(VAL id)
    CC "AdoScript" INFOBOX ("ClassID: "+(STR classid))

# delete row
    CC "AdoScript" INFOBOX ("Now removing added row...")
    CC "Core" REMOVE_REC_ROW objid:(VAL firstselected) attrid:(VAL id) rowid:(rowid)

# get again row count
    CC "Core" GET_REC_ATTR_ROW_COUNT objid:(VAL firstselected) attrid:(VAL id)
    CC "AdoScript" INFOBOX ("Final row count: "+(STR count))
  }
}

Preparing:

  • Get selected objects
  • pick first selected
  • get its class id
  • get all attributes of that class
  • loop for all attributes

Interesting:

  • check for attribute type RECORD
  • get attribute name
  • GET_REC_ATTR_ROW_COUNT
  • ADD_REC_ROW
  • GET_REC_ATTR_ROW_COUNT
  • GET_REC_ATTR_ROW_ID
  • GET_REC_CLASS_ID
  • REMOVE_REC_ROW
  • GET_REC_ATTR_ROW_COUNT

Versions and Changes ​

Available since ADOxx 1.3