ade_qrysetcond

Land Desktop Development ARX CPP SDK

Up a level
ade_qrysetcond
 
 

Replaces a query condition.

int

ade_qrysetcond(

ade_id condition_id,

struct resbuf* condition);

Returns RTNORM or an error code.

condition_id Query condition ID to replace.
condition New query condition (a list). See ade_qrydefine.

This function affects the current query.

You cannot alter grouping with this function. Any grouping you specify is ignored. To group or ungroup, use ade_qrygroup or ade_qryungroup.

The following sample defines a query using ade_qrydefine(). A resbuf is created which contains the replacement query condition. This resbuf and the query condition id returned by ade_qrydefine() are used as parameters to ade_qrysetcond(). The value returned by ade_qrysetcond() is checked against RTNORM and an appropriate message is displayed. The resbuf is then released as required.

char* pszJoinOperator = "";     // none
char* pszBgnCondGrouping = "";  // none
char* pszNotOperator = "";      // none
char* pszCondType = "Property";
char* pszEndCondGrouping = "";  // none
struct resbuf* pQueryConditionRb = acutBuildList(
                                     RTLB,
                                        RTSTR, "layer",
                                        RTSTR, "=",
                                        RTSTR, "Pond",
                                     RTLE,
                                     0 );
ade_id queryCondId = ade_qrydefine(
                        pszJoinOperator,
                        pszBgnCondGrouping,
                        pszNotOperator,
                        pszCondType,
                        pQueryConditionRb,
                        pszEndCondGrouping);
if (queryCondId != ADE_NULLID) {
    struct resbuf* pSetQueryConditionRb = acutBuildList(
                                            RTLB,
                                                RTSTR, "",//joinop
                                                RTSTR, "",//bggroups
                                                RTSTR, "",//not_op
                                                RTSTR, "property",
                                                RTLB,
                                                    RTSTR, "layer",
                                                    RTSTR, "=",
                                                    RTSTR, "Water",
                                                RTLE,
                                            RTLE,
                                            0 );
    int returnCode = ade_qrysetcond(queryCondId, pSetQueryConditionRb);
    if (RTNORM == returnCode) {
        acutPrintf(
            "\nThe query condition has been modified.");
    }
    else {
        acutPrintf(
            "\nThe query condition has not been modified.");
    }
    acutRelRb(pQueryConditionRb);
    acutRelRb(pSetQueryConditionRb);
}