Hello all,
Can someone please provide me with some real-life samples on how to
(properly) write a C ARDBC Plug-in for Remedy (I've also tried
getemployeedata.c) ?
So far I've read the C-API-Ref-710, used the ardbcskl.c and headers from
the samples directory and implemented the ARDBCGetListSchemas method
successfully.
I'm having trouble implementing the ARDBCGetMultipleFields method, which
is not showing all the fields I insert to the array
mapping->mappingList. Only the first one is shown.
Please find below the source I'm trying to use:
ARPLUGIN_EXPORT int ARDBCGetMultipleFields(
void *object, /* IN; plug-in instance */
ARCompoundSchema *schema, /* IN; form containing the data */
ARFieldMappingList *mapping,/* OUT; list of fields */
ARFieldLimitList *limit, /* OUT; corresponding field limits */
ARUnsignedIntList *dataType,/* OUT; corresponding data types */
ARStatusList *status /* OUT; status of the operation */
)
{
FILE * pFile;
pFile = fopen ("myfile.txt","a");
if (schema->schemaType == AR_SCHEMA_VENDOR &&
strcmp(schema->u.vendor.tableName, FORM_NAME) == 0)
{
mapping->numItems = 3;
mapping->mappingList =
(ARFieldMappingStruct *) malloc(sizeof(ARFieldMappingStruct) *
mapping->numItems);
if (mapping->mappingList == NULL) return AR_RETURN_ERROR;
mapping->mappingList[0].fieldType = AR_FIELD_VENDOR;
strcpy(mapping->mappingList[0].u.vendor.fieldName, "file_id"); /*
this is shown OK */
mapping->mappingList[1].fieldType = AR_FIELD_VENDOR;
strcpy(mapping->mappingList[1].u.vendor.fieldName, "file_name");
/* this is not */
mapping->mappingList[2].fieldType = AR_FIELD_VENDOR;
strcpy(mapping->mappingList[2].u.vendor.fieldName, "file_date");
if (pFile!=NULL)
{
fprintf (pFile, "-//-\r\n");
fprintf (pFile, "%s\r\n",
mapping->mappingList[0].u.vendor.fieldName);
fprintf (pFile, "%s\r\n",
mapping->mappingList[1].u.vendor.fieldName);
fprintf (pFile, "%s\r\n",
mapping->mappingList[2].u.vendor.fieldName);
/* all these fields appear filled in on the log file
I'm creating at runtime */
}
limit->numItems = 3;
limit->fieldLimitList =
(ARFieldLimitStruct *) calloc(limit->numItems,
sizeof(ARFieldLimitStruct));
if (limit->fieldLimitList == NULL) return AR_RETURN_ERROR;
limit->fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR;
limit->fieldLimitList[0].u.charLimits.maxLength = 20;
limit->fieldLimitList[0].u.charLimits.menuStyle = AR_MENU_APPEND;
limit->fieldLimitList[0].u.charLimits.qbeMatchOperation =
AR_QBE_MATCH_ANYWHERE;
limit->fieldLimitList[0].u.charLimits.fullTextOptions =
AR_FULLTEXT_OPTIONS_NONE;
/* from this point on, nothing is recognized on Remedy, but is
show on the log file (?) */
limit->fieldLimitList[1].dataType = AR_DATA_TYPE_CHAR;
limit->fieldLimitList[1].u.charLimits.maxLength = 21;
limit->fieldLimitList[1].u.charLimits.menuStyle = AR_MENU_APPEND;
limit->fieldLimitList[1].u.charLimits.qbeMatchOperation =
AR_QBE_MATCH_ANYWHERE;
limit->fieldLimitList[1].u.charLimits.fullTextOptions =
AR_FULLTEXT_OPTIONS_NONE;
limit->fieldLimitList[2].dataType = AR_DATA_TYPE_CHAR;
limit->fieldLimitList[2].u.charLimits.maxLength = 22;
limit->fieldLimitList[2].u.charLimits.menuStyle = AR_MENU_APPEND;
limit->fieldLimitList[2].u.charLimits.qbeMatchOperation =
AR_QBE_MATCH_ANYWHERE;
limit->fieldLimitList[2].u.charLimits.fullTextOptions =
AR_FULLTEXT_OPTIONS_NONE;
if (pFile!=NULL)
{
fprintf (pFile, "---\r\n");
fprintf (pFile, "%d\r\n",
limit->fieldLimitList[1].dataType);
fprintf (pFile, "%d\r\n",
limit->fieldLimitList[1].u.charLimits.maxLength);
fprintf (pFile, "%d\r\n",
limit->fieldLimitList[1].u.charLimits.menuStyle);
}
/* fill the data type list */
dataType->numItems = 3;
dataType->intList =
(unsigned int *) malloc(sizeof(unsigned) * dataType->numItems);
if (dataType->intList == NULL) return AR_RETURN_ERROR;
dataType->intList[0] = AR_DATA_TYPE_CHAR;
dataType->intList[1] = AR_DATA_TYPE_CHAR;
dataType->intList[2] = AR_DATA_TYPE_CHAR;
if (pFile!=NULL)
{
fprintf (pFile, "---\r\n");
fprintf (pFile, "%d\r\n", dataType->intList[0]);
fprintf (pFile, "%d\r\n", dataType->intList[1]);
fprintf (pFile, "%d\r\n", dataType->intList[2]);
fclose (pFile);
}
}
return AR_RETURN_OK;
}
Kind regards,
Paulo Moreira
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor: www.rmsportal.com ARSlist: "Where the Answers Are"