No artigo de hoje, vamos demonstrar em como fazer uma query, para consultar informações de uma rotina nos menus do Protheus.
Supondo que você precisa encontrar em que menu está determinada rotina, como podemos fazer isso através de uma query?
Pois bem, as tabelas que vamos usar aqui serão as seguintes:
- MPMENU_MENU – Cadastro de Menus
- MPMENU_ITEM – Itens do Menu
- MPMENU_FUNCTION – Função vinculada ao Item
- MPMENU_I18N – Opções do Menu e Opções do Item
Com isso, por exemplo, vou pesquisar pela função MATA010, e ela vai me trazer uma lista dos módulos onde está esse cadastro, conforme print abaixo:
E abaixo a query montada de exemplo:
SELECT M_NAME AS MODULO_NOME, M_MODULE AS MODULO_COD, I_TABLES AS TABELAS, F_FUNCTION AS FUNCAO, DADOS_MENU.N_DESC AS SUBMENU_NOME, DADOS_ITEM.N_DESC AS ROTINA_NOME FROM MPMENU_MENU MENU INNER JOIN MPMENU_ITEM ITEM ON ( ITEM.I_ID_MENU = MENU.M_ID AND ITEM.D_E_L_E_T_ = ' ' ) INNER JOIN MPMENU_FUNCTION FUNC ON ( FUNC.F_ID = ITEM.I_ID_FUNC AND FUNC.D_E_L_E_T_ = ' ' ) INNER JOIN MPMENU_I18N DADOS_MENU ON ( DADOS_MENU.N_PAREN_ID = ITEM.I_FATHER AND DADOS_MENU.N_LANG = '1' AND DADOS_MENU.D_E_L_E_T_ = ' ' ) INNER JOIN MPMENU_I18N DADOS_ITEM ON ( DADOS_ITEM.N_PAREN_ID = ITEM.I_ID AND DADOS_ITEM.N_LANG = '1' AND DADOS_ITEM.D_E_L_E_T_ = ' ' ) WHERE MENU.D_E_L_E_T_ = ' ' AND F_FUNCTION LIKE '%MATA010%' ORDER BY MODULO_COD
Bom pessoal, por hoje é só.
Abraços e até a próxima.