Thanks for the response Jarl. You said that you would do it the Java way today? 
As far as I have read, ARDBC plugins for vendor forms must still be in dll 
form? Or have I missed something?


with regards,



Jonas Stumph Stevnsvig
Remedy Developer
BEC 
Phone  (+45) 46 38 20 08
Mobile  (+45) 61 56 20 08
[email protected]
[email protected]

-----Oprindelig meddelelse-----
Fra: Action Request System discussion list(ARSList) 
[mailto:[email protected]] På vegne af Jarl Grøneng
Sendt: 11. juni 2009 17:03
Til: [email protected]
Emne: Re: ARDBC plugin development again

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 <[email protected]>:
> **
> 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: [email protected] ARSlist: "Where the 
> Answers Are"_

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum 
Sponsor:[email protected] ARSlist: "Where the Answers Are"

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor:[email protected] ARSlist: "Where the Answers Are"

Reply via email to