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"