Share via


IExpressionStore::SaveExpression Method

Use this method to save a new or modified expression to the expression store. For a new expression, the SaveExpression method automatically generates a unique expression ID and stores it with the expression.

HRESULT IExpressionStore::SaveExpression(
  _Recordset* pRSExpr
);
Sub SaveExpression(
    pRSExpr As Object
)

Parameters

  • pRSExpr
    [C++]

    [in] A pointer to the ADO hierarchical Recordset object that contains the expression.

    [Visual Basic]

    A Recordset object that contains the expression.

Return Value

[C++]

This method returns an HRESULT indicating whether it completed successfully. See the Error Values section for more details.

[Visual Basic]

None.

Error Values

[C++]

This method returns S_OK (0x00000000) to indicate success and either standard or custom COM HRESULT error values to indicate failure. For more information about standard COM errors, see Standard COM Errors.

[Visual Basic]

This method sets the Number property of the global Err object to S_OK (&H00000000) to indicate success and to either standard or custom COM error values to indicate failure. For more information about standard COM errors, see Standard COM Errors.

The following table shows the custom COM errors that this method can return.

Constant

Value

Description

E_EXPR_BADCONNECTION

0x8110001F

&H8110001F

Invalid connection

E_EXPR_BADEXPRBODY

0x81100004

&H81100004

Invalid or missing expression body

E_EXPR_BADEXPRCATEGORY

0x8110000A

&H8110000A

Invalid expression category specified

E_EXPR_BADEXPRNAME

0x81100003

&H81100003

Invalid expression name

E_EXPR_CYCLEDETECTED

0x81100006

&H81100006

A cycle was detected in the expression dependencies of this expression

E_EXPR_DUPEXPRDEPS

0x81100009

&H81100009

Duplicate expression dependency

E_EXPR_DUPEXPRNAME

0x81100007

&H81100007

Duplicate expression name

E_EXPR_DUPPROFDEPS

0x81100008

&H81100008

Duplicate profile dependency

E_EXPR_INVALIDEXPRDEPS

0x8110000B

&H8110000B

One or more of the expression dependencies refers to an expression ID that does not exist

E_EXPR_INVALIDFIELDSIZE

0x81100005

&H81100005

The new name exceeds the maximum size of 30 characters

E_EXPR_NOCONNECTIONSTRING

0x8110000D

&H8110000D

No connection string specified

E_EXPR_NOPROFDEPS

0x81100002

&H81100002

Expression must have at least one profile-dependency to be saved

[C++]

Additional information may be available using the global Err object, which can be accessed using the API function GetErrorInfo. In particular, the GetDescription method of the IErrorInfo interface may return a text description of the error.

[Visual Basic]

Additional information may be available using the global Err object. In particular, the Description property may contain a text description of the error.

Remarks

If the expression being saved is not currently in the expression store, the SaveExpression method generates a unique identifier and populates the ExprID field of the Recordset object. The identifier is a positive integer. For more information about the format and fields of the Recordset object, see Expression Recordset.

The ExpressionStore object performs rudimentary checks for expression dependencies when an expression is saved or deleted. This includes any direct references, a test for cyclic referencing, and any references to non-existent expressions.

Call the Connect method before calling the SaveExpression method.

See Also

Other Resources

ExpressionStore Object

IExpressionStore::Connect Method

IExpressionStore::GetExpression Method

IExpressionStore::NewExpression Method