...
Code Block | ||||
---|---|---|---|---|
| ||||
EdmiError edmiRemotePutAttrsEx(SdaiServerContext serverContextId,
SdaiAppInstance instance,
SdaiInteger attributes,
SdaiAttr attributeIds[],
SdaiSelect attributeValues[],
SdaiOptions options,
SdaiInvocationId *edmiInvocationId);
|
Assigns values to one or more of the attributes of a specified instance. This operation is applicable only to Explicit attributes, not to Inverse or Derive attributes. The attributes are identified by their attributeIds. Related functions: edmiRemotePutAttrs, edmiRemotePutAttrsBN, edmiRemotePutAttrsBNEx
Header:
#include "sdai.h"
Prototype:
EdmiError edmiRemotePutAttrsEx(SdaiServerContext serverContextId,
SdaiAppInstance instance,
SdaiInteger attributes,
SdaiAttr attributeIds[],
SdaiSelect attributeValues[],
SdaiOptions options,
SdaiInvocationId *edmiInvocationId);
Arguments:
Arguments
...
Type | Name | Comment |
SdaiServerContext | serverContextId | Context identification, from edmiDefineServerContext |
SdaiAppInstance | instance | A numeric instanceID that uniquely identifies an instance in the remote _EDMdatabase{_}.remote EDMdatabase |
SdaiInteger | attributes | The number of attributes for which to assign values. |
SdaiAttr | attributeIds[] | A buffer of attributeIds. Each attributeId identify an attribute of the given instance for which a value is to be asignedassigned. |
SdaiSelect | attributeValues[] | A buffer of tSdaiSelect structures. Each structure must contain the value to assign to the corresponding attribute. |
SdaiOptions | options | Currently not used. |
SdaiInvocationId | edmiInvocationId | Currently not used. |
...
Return Value
...
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|
Options
...
Option | Comment |
Option name | Comment |
Example
...
Code Block | ||
---|---|---|
| ||
#define S_NAT 0 #define S_PHONE 1 #define S_NATTR 2 int i; EdmiError rstat; SdaiServerContext myContext; SdaiInteger index, nHits; SdaiAttr attrIds[S_NATTR]; |
...
tSdaiSelect sel[S_NATTR]; |
...
SdaiSelect attrVals[S_NATTR] = {&sel[S_NAT], &sel[S_PHONE]}; |
...
SdaiQueryResult qexRes; |
...
/* Create Server Context */ |
...
rstat = edmiDefineServerContext("MyContext", |
...
"Johnny", "Supervisor", "cf37ftr", |
...
"TCP", "9090", "MyServerHost", |
...
NULL, NULL, NULL, NULL, NULL, &myContext); |
...
/* Get the persons nationality attribute ID */ |
...
rstat = edmiRemoteGetAttrDefinitionBN(myContext, "MySocialRelations", |
...
"Person", "NATIONALITY", &attrIds[S_NAT], NULL); |
...
/* And his phone number attribute ID */ |
...
rstat = edmiRemoteGetAttrDefinitionBN(myContext, "MySocialRelations", |
...
"Person", "PHONE_NO", &attrIds[S_PHONE], NULL); |
...
/* Select all person instances */ |
...
rstat = edmiRemoteSelectInstances(myContext, "MyRepository", |
...
"MySocialRelations", "Person", |
...
NULL, ONLY_INSTANCE_IDS, NULL, NULL, NULL, |
...
&index, &nHits, &qexRes, NULL, NULL, NULL, NULL); |
...
/* Get nationality and phone number */ |
...
for (i=0;i<nHits;i++) { |
...
char _phoneNumber[12]; |
...
rstat = edmiRemoteGetAttrsEx(myContext, |
...
qexRes->instanceIds[i], 0, S_NATTR, |
...
attrIds, &attrVals[0], GET_ATTRS, NULL); |
...
/* Set correct nationality code */ |
...
if (! strcmp(attrVals[S_NAT]->value.enumVal, "NOR")) { |
...
strcpy(_phoneNumber, "+47-"); |
...
} else if (! strcmp(attrVals[S_NAT]->value.enumVal, "SWE")) { |
...
strcpy(_phoneNumber, "+44-"); |
...
} else if (! strcmp(attrVals[S_NAT]->value.enumVal, "DEN")) { |
...
strcpy(_phoneNumber, "+45-"); |
...
} else { |
...
strcpy(_phoneNumber, "+??-"); |
...
} /* Concatenate the original phone number */ strcat(_phoneNumber, attrVals[S_PHONE]->value.stringVal); |
...
/* Free allocated strings |
...
in the select buffers */ edmiFree(attrVals[S_NAT]->value.enumVal); |
...
edmiFree(attrVals[S_PHONE]->value.stringVal); |
...
/* Put back the extended phone number */ |
...
attrVals[S_PHONE]->value.stringVal = _phoneNumber; |
...
rstat = edmiRemotePutAttrsEx(myContext, qexRes->instanceIds[i], 1, |
...
&attrIds[S_PHONE], &attrVals[S_PHONE], 0, NULL); |
...
} edmiFreeQueryResult(qexRes); |
...
. . . |
See also
Filter by label (Content by label) | ||||||
---|---|---|---|---|---|---|
|