Estamos com uma necessidade de buscar os dados gravados em uma tabela pai-filho de um formulário direto na base de dados e para isso precisamos saber como encontrar esta tabela.
Sei que para buscar os dados do documento principal eu preciso saber o COD_LISTA fazendo um select na tabela documento procurando pelo numero do documento (nr_documento) e tipo (tp_documento) = 4. Com o código da lista descubro qual a tabela metalista com a combinação ml + XXX + DDD, onde XXX é destinado a empresa, e o DDD é o código da lista.
Agora, como fazer isso para tabelas pai-filho?
Boa tarde,
Então, existe a tabela META_LISTA_REL, que relaciona meta listas com seus "filhos". O COD_LISTA_PAI é o registro na tabela META_LISTA do pai (no caso o que está no DOCUMENTO) e o COD_LISTA_FILHO é o registro que está na META_LISTA do filho, ou seja, os registros filhos pertencem a tabela onde o DDD é o COD_LISTA_FILHO.
Bom dia Gustavo. A forma que você me orientou eu consegui encontrar a tabela pai-filho. Porém fiquei com uma dúvida, a forma de ligar o registro do documento principal com o registro da tabela pai-filho é pela coluna ID?
Você pode fazer isso pelo documentid presente tanto na metalista filha quanto na do pai.
Segue o SQL que você tem que rodar no banco do fluig pra verificar qual a ML relativa aos pais-filhos de um formulário:
SELECT
'ML00?' + CONVERT(VARCHAR(10), l.COD_LISTA_PAI) AS 'TABELA_PRINCIPAL',
'ML00?' + CONVERT(VARCHAR(10), l.COD_LISTA_FILHO) AS 'TABELA_PAIxFILHO',
d.COD_LISTA,
l.COD_LISTA_PAI,
l.COD_LISTA_FILHO,
l.COD_TABELA
,d.NUM_DOCTO_PROPRIED
,d.NUM_VERS_PROPRIED
FROM DEF_PROCES p -- Tabela principal de configuração dos processos
LEFT JOIN VERS_DEF_PROCES vp ON vp.COD_DEF_PROCES = p.COD_DEF_PROCES -- Tabela auxiliar de versões do processo
AND vp.LOG_ATIV = 1
LEFT JOIN DOCUMENTO d ON d.NR_DOCUMENTO = vp.NUM_PASTA_FORM -- Tabela de formulários/documentos ECM
AND d.VERSAO_ATIVA = 1
LEFT JOIN SERV_DATASET ds ON ds.COD_DATASET = d.NM_DATASET -- Tabela de datasets dos formulários/documentos
LEFT JOIN META_LISTA_REL l ON l.COD_LISTA_PAI = d.COD_LISTA -- Tabela de referência das tabelas de dados dos formulários
WHERE p.COD_DEF_PROCES = 'NOME_DO_PROCESSO' OR ds.COD_DATASET = ''
ORDER BY vp.NUM_VERS DESC
Para achar as tabelas ML especificas de um processo basta informar na cláusula WHERE o nome do PROCESSO em "p.COD_DEF_PROCES", ou então o nome do DATASET do formulário em "ds.COD_DATASET".
Obs: É necessário subistituir o "?" pelo valor da COLIGADA da sua empresa (por padrão é 1).