# IDataSource.Add()

Description:

The `Add` method adds a new landmark or landmark category to a landmark database. You can also use this method to edit an existing landmark or landmark category.

This is a synchronous method.

Syntax:

    result = so.IDataSource.Add(criteria);

Arguments:

- `criteria`:

  This is an object that specifies the landmark or landmark category to add or edit. For more information about the object properties and how to define them, see section Criteria for adding and editing landmark information.

Return value:

The `Add` method returns an object that contains the ID of the landmark or landmark category that was added or edited, an error code, and an error message.

Table: Return value properties for Add
Property | Description | Value
--- | --- | ---
`result.ReturnValue` | This is a text string that contains the ID of the landmark or landmark category that was added or edited. |
`result.ErrorCode` | This is a number that specifies a predefined error code. | See Service API error codes.
`result.ErrorMessage` | This is a text string that describes the error. | See Landmarks Service API error messages.

Remarks:

- If a landmark or landmark category is to be edited, it must exist in the database. Use the `GetList` method to retrieve the ID of the landmark or landmark category.

- If no landmark database is specified, `Add` is performed on the default database. If the default database does not exist, it is created and set active. The default database is `file://c:eposlm.ldb`.

- For more information about landmarks, landmark categories, and landmark databases, see the Landmarks Service overview page.

Example code:

For the complete source of a sample widget that demonstrates how to use this Service API, see the full example.