Usuário com melhor resposta
Lookup Método

Pergunta
-
Olá Pessoal,
Como faço para fazer um lookup utilizando INNER JOIN ou SELECT com outra tabela para retornar tais registros ?
Criei uma tabela nova (KBS_InventModelGroup) que contém o campos :
- Grupo de Modelo de Estoque
- Empresa(DataAreaID)
Neste caso eu preciso que o campo Item na tela de Ordem de compra, retorne no lookup somente os itens cujo os grupos de modelo de itens estejam na tabela nova (INNER JOIN) e a empresa seja = ao que estou logado no sistema
Utlizando um select simples para compreensão seria mais ou menos desta forma...
Select * From InventTable
Inner join KBS_InventModelGroup ON
InventTable.ModelGroupID = KBS_InventModelGroup.ModelGroupID
Where KBS_InventModelGroup.DataAreaID = <a empresa que estou logado no AX)
O problema é que não sei como fazer este código no X++ no método Lookup ou Modified....
Enquanto respondem vou tentando também.....
Obrigado,
Andre
Respostas
-
André,Isso ai resolve seu problema:[]sPichler
Pichler- Marcado como Resposta André L.Silva sábado, 27 de março de 2010 13:28
-
Andre,
No Lookup do AX a parte de trazer apenas os registros da empresa que você está logado já é default.
Agora para fazer um lookup aonde traga apenas os registros que tenham o ModelGroupID na tabela KBS_InventModelGroup deve fazer uma Query com dois datasources e ativar a relation, mas as tabelas devem estar com seus relacionamentos configurados no AX.
Exemplo:
public void lookup() { Query query = new Query(); QueryBuildDataSource dtsInventTable; QueryBuildDataSource dtsKBS_InventModelGroup; SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(InventTable), this); ; dtsInventTable = query.addDataSource(tableNum(CustTable)); //Faz o relacionamento entre as tabelas aqui dtsKBS_InventModelGroup = dsCustTable.addDataSource(tableNum(KBS_InventModelGroup)); dtsKBS_InventModelGroup.relations(true); dtsKBS_InventModelGroup.joinMode(JoinMode::ExistsJoin); sysTableLookup.parmQuery(query); //Adiciona os campos que vão aparecer no lookup sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId)); sysTableLookup.addLookupfield(fieldNum(InventTable, ItemName)); // Executa o lookup sysTableLookup.performFormLookup(); }
Espero ter ajudado! Abraços- Marcado como Resposta André L.Silva sábado, 27 de março de 2010 13:28
Todas as Respostas
-
André,Isso ai resolve seu problema:[]sPichler
Pichler- Marcado como Resposta André L.Silva sábado, 27 de março de 2010 13:28
-
Andre,
No Lookup do AX a parte de trazer apenas os registros da empresa que você está logado já é default.
Agora para fazer um lookup aonde traga apenas os registros que tenham o ModelGroupID na tabela KBS_InventModelGroup deve fazer uma Query com dois datasources e ativar a relation, mas as tabelas devem estar com seus relacionamentos configurados no AX.
Exemplo:
public void lookup() { Query query = new Query(); QueryBuildDataSource dtsInventTable; QueryBuildDataSource dtsKBS_InventModelGroup; SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(InventTable), this); ; dtsInventTable = query.addDataSource(tableNum(CustTable)); //Faz o relacionamento entre as tabelas aqui dtsKBS_InventModelGroup = dsCustTable.addDataSource(tableNum(KBS_InventModelGroup)); dtsKBS_InventModelGroup.relations(true); dtsKBS_InventModelGroup.joinMode(JoinMode::ExistsJoin); sysTableLookup.parmQuery(query); //Adiciona os campos que vão aparecer no lookup sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId)); sysTableLookup.addLookupfield(fieldNum(InventTable, ItemName)); // Executa o lookup sysTableLookup.performFormLookup(); }
Espero ter ajudado! Abraços- Marcado como Resposta André L.Silva sábado, 27 de março de 2010 13:28
-