This is how I used this. Its a few years since I wrote this, and would
definitly do it the Java way today:


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 */
)
{
   /* verify that the form name is the one we know about otherwise */
   /* we will ignore this request                                  */

   if (schema->schemaType == AR_SCHEMA_VENDOR &&
       strcmp(schema->u.vendor.tableName, VENDOR_FORM_NAME) == 0)
   {
      /* fill the field mapping list with the three fields other than */
      /* the id field that we are exposing                            */

      mapping->numItems = 3;

      mapping->mappingList =
         (ARFieldMappingStruct *) malloc(sizeof(ARFieldMappingStruct) *
                                         mapping->numItems);
      if (mapping->mappingList == NULL)
         return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
                                PLUGIN_ERROR_MEMORY, "");

      mapping->mappingList[0].fieldType = AR_FIELD_VENDOR;
      strcpy(mapping->mappingList[0].u.vendor.fieldName, "employee_name");
      mapping->mappingList[1].fieldType = AR_FIELD_VENDOR;
      strcpy(mapping->mappingList[1].u.vendor.fieldName, "employee_phone");
      mapping->mappingList[2].fieldType = AR_FIELD_VENDOR;
      strcpy(mapping->mappingList[2].u.vendor.fieldName, "employee_email");

      /* fill the field limit list (in case the Admin Tool uses it someday) */

      limit->numItems = 3;

      limit->fieldLimitList =
         (ARFieldLimitStruct *) calloc(limit->numItems,
                                       sizeof(ARFieldLimitStruct));
      if (limit->fieldLimitList == NULL)
         return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
                                PLUGIN_ERROR_MEMORY, "");

      limit->fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR;
      limit->fieldLimitList[0].u.charLimits.maxLength = 50;
      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;
      limit->fieldLimitList[1].dataType = AR_DATA_TYPE_CHAR;
      limit->fieldLimitList[1].u.charLimits.maxLength = 20;
      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 = 50;
      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;

      /* fill the data type list */

      dataType->numItems = 3;

      dataType->intList =
         (unsigned int *) malloc(sizeof(unsigned) * dataType->numItems);
      if (dataType->intList == NULL)
         return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
                                PLUGIN_ERROR_MEMORY, "");

      dataType->intList[0] = AR_DATA_TYPE_CHAR;
      dataType->intList[1] = AR_DATA_TYPE_CHAR;
      dataType->intList[2] = AR_DATA_TYPE_CHAR;
   }

   return AR_RETURN_OK;


2009/6/11 Jonas Stumph Stevnsvig <jonas.stumph.stevns...@bec.dk>:
> **
> Hi listers
>
> I'm currently in the process of creating a "hello world" in remedy, based on
> the ardbcskl.c
>
> Unfortunately my efforts are not going well.. I'm getting an error 129 -
> which i have resolved to  "Field limit definition is invalid.
> The field limit specified for this field is invalid.
>  For a numeric field, make sure that the high range is greater than the low
> range.
>  For a character field, make sure that the pattern is within the size limit
> of the field. Also, verify
> that the specified character menu, the menu style setting, and the match
> operation setting are
> legal.
>  For a selection field, verify that the value is a legal value for the
> field."
> Using the 7.5 error messages guide (I get "Message not in catalog; Message
> number = 129 DummyChar,  129,  TEST:JSS:HB2") When i try to save the form.
> I get another error if I try to make an integer field - any help is
> appreciated
>
> (ARS7.5, MSSQL 2005 DB, WIN2k3)
>
>
> /*****************************************************************************/
> /*
> */
> /*                         ARDBCGetMultipleFields
> */
> /*
> */
> /*****************************************************************************/
> /*
> */
> /*   Description:  This is used to get a list of candidate fields to which
> */
> /*      fields on a vendor forms can be attached.
> */
> /*
> */
> /*****************************************************************************/
>
> 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 */
> )
> {
>         //dummy tæller
>         int antalElementer = 1;
>
>         //initialiser structs
>         mapping->numItems = antalElementer;
>         mapping->mappingList =
> calloc(mapping->numItems,sizeof(ARFieldMappingStruct));
>
>         dataType->numItems = antalElementer;
>         dataType->intList = calloc(dataType->numItems, sizeof(int));
>
>         limit->numItems = antalElementer;
>         limit->fieldLimitList =
> calloc(limit->numItems,sizeof(ARFieldLimitStruct));
>
>         //første felt (char)
>         mapping->mappingList[0].fieldType = AR_DATA_TYPE_CHAR;
>         memcpy(mapping->mappingList[0].u.vendor.fieldName, "DummyChar",9);
>
>         limit->fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR;
>         limit->fieldLimitList[0].u.charLimits.maxLength = 200;
>         //limit->fieldLimitList[0].u.charLimits.lengthUnits = 1;
>         //limit->fieldLimitList[0].u.charLimits.storageOptionForCLOB = 0;
>         //limit->fieldLimitList[0].u.charLimits.pattern = "$ALPHA$";
>
>         dataType->intList[0] = AR_DATA_TYPE_CHAR;
>
>         //andet felt (int)
> /*      mapping->mappingList[1].fieldType = AR_DATA_TYPE_INTEGER;
>         memcpy(mapping->mappingList[1].u.vendor.fieldName, "DummyInt",8);
>
>         limit->fieldLimitList[1].dataType = AR_DATA_TYPE_INTEGER;
>         limit->fieldLimitList[1].u.intLimits.rangeLow = -100;
>         limit->fieldLimitList[1].u.intLimits.rangeHigh = 100;
>
>         dataType->intList[1] = AR_DATA_TYPE_INTEGER;
> */
>
>         return AR_RETURN_OK;
> }
>
> _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers
> Are"_

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are"

Reply via email to