In this article
we will see how to bind table all columns name in custom lookup. For that we
have to create table for storing getting table fields and tableid. And in form
create custom lookup for display value in dropdown. Create custom lookup in
form controls and create method for storing values in table.
publicvoid lookup()
{
//super();
//A_PurchaseOrder::lookupFields(this);
// A_PurchaseOrder
PurchaseOrder1;
Query query = new Query();
QueryBuildDataSource
queryBuildDataSource,qbds1;
QueryBuildRange
queryBuildRange,qbr1;
SysTableLookup
sysTableLookup;
tableNametableName = 'A_PurchaseOrder';
DictField dictField;
SysModelElement tables;
SysModelElement fields;
A_FieldLookUpTableA_FieldLookUpTable;
DictTable dictTable;
inttmpTableid = tablename2id(tableName);
inti;
dictTable = new
DictTable(tableName2id(tableName));
select A_PurchaseOrder whereA_PurchaseOrder.TableId == tmpTableid;
if(A_PurchaseOrder.TableId ==
tmpTableid)
{
whileselect tables
wheretables.ElementType == UtilElementType::Table &&
tables.Name == tableName
join fields
wherefields.ElementType ==
UtilElementType::TableField&&
fields.ParentModelElement == tables.RecId
{
dictField = new
DictField(tables.AxId, fields.AxId);
selectA_FieldLookUpTablewhereA_FieldLookUpTable.A_TableID == int2str(tmpTableid) &&
A_FieldLookUpTable.Label ==
dictField.label() &&A_FieldLookUpTable.Field==dictField.name();
if(!(A_FieldLookUpTable.A_TableID)
&& !(A_FieldLookUpTable.Field==dictField.name() &&
!(A_FieldLookUpTable.Label == dictField.label())))
{
//Create table and Add fields
Label(String),Field(String),A_TableID(int)
//insert into
A_FieldLookUpTable table
A_FieldLookUpTable.Label =
dictField.label();
A_FieldLookUpTable.Field = dictField.name();
A_FieldLookUpTable.A_TableID = int2str(tmpTableid);
A_FieldLookUpTable.insert();
}
}
}
//Create an instance of
SysTableLookup with the form control passed in
sysTableLookup = SysTableLookup::newParameters(tablenum(A_FieldLookUpTable), this);
//Add the fields to be shown
in the lookup form
//sysTableLookup.addLookupfield(fieldnum(A_FieldLookUpTable,
Label));
sysTableLookup.addLookupfield(fieldnum(A_FieldLookUpTable,Field));
//create the query datasource
queryBuildDataSource =
query.addDataSource(tablenum(A_FieldLookUpTable));
queryBuildDataSource.addSortField(fieldNum(A_FieldLookUpTable, Field),
SortOrder::Ascending);
queryBuildRange = queryBuildDataSource.addRange(fieldnum(A_FieldLookUpTable, A_TableID));
queryBuildRange.value(A_FieldLookUpTable.A_TableID);
//add the query to the lookup
form
sysTableLookup.parmQuery(query);
// Perform lookup
sysTableLookup.performFormLookup();
}