SubstituiFrom
Esta função substitui uma cláusula FROM no SELECT da seção passada como parâmetro. A substituição pode ser parcial, se o parâmetro TabelaSubstituída for passado ou total, se o mesmo for omitido.
Para usar esta função, é preciso desativar os relacionamentos automáticos que são feitos cada vez que uma nova tabela é adicionada a seção. Na propriedade Relacionamento da seção detalhe, onde são mostrados todos os relacionamentos automáticos, selecione-os e utilize a opção Sem Conexão.
A função permite que apenas um Join seja informado no parâmetro NovaClausula.
Junções Suportadas:
- CROSS JOIN (Produto Cartesiano);
- INNER JOIN (Junção);
- LEFT OUTER JOIN (Junção Externa a Direita);
- RIGHT OUTER JOIN (Junção Externa a Esquerda);
- NATURAL JOIN (Junção Natural);
- KEYED JOIN (Junção por Chave).
Sintaxe: SubstituiFrom (Alfa SectionName, Alfa NovaClausula, Alfa TabelaSubstituida);
Parâmetros:
Nome | Tipo | Descrição |
---|---|---|
SectionName | Alfa | Nome da seção onde será substituída o FROM no SQL |
NovaClausula | Alfa | Cláusula que irá substituir o FROM atual total ou parcialmente |
TabelaSubstituída | Alfa | Indica qual o nome da tabela que está na cláusula FROM que sua descrição será substituída pela nova cláusula. Se este parâmetro for informado, somente esta tabela será substituída. Caso este parâmetro não seja informado, toda a cláusula FROM será substituída |
Exemplos:
Cross Join:
SubstituiFrom ("Detalhe_1", "(R034FUN CROSS JOIN R036DEP)", "");
SELECT
R034FUN.NUMEMP R034FUNNUMEMP,
R034FUN.TIPCOL R034FUNTIPCOL,
R034FUN.NUMCAD R034FUNNUMCAD,
R034FUN.NOMFUN R034FUNNOMFUN,
R036DEP.NUMEMP R036DEPNUMEMP,
R036DEP.TIPCOL R036DEPTIPCOL,
R036DEP.NUMCAD R036DEPNUMCAD,
R036DEP.CODDEP R036DEPCODDEP,
R036DEP.NOMDEP R036DEPNOMDEP
FROM
(R034FUN CROSS JOIN R036DEP)
Inner Join:
SubstituiFrom ("Detalhe_1", "(R034FUN INNER JOIN R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP)", "");
SELECT
R034FUN.NUMEMP R034FUNNUMEMP,
R034FUN.TIPCOL R034FUNTIPCOL,
R034FUN.NUMCAD R034FUNNUMCAD,
R034FUN.NOMFUN R034FUNNOMFUN,
R036DEP.NUMEMP R036DEPNUMEMP,
R036DEP.TIPCOL R036DEPTIPCOL,
R036DEP.NUMCAD R036DEPNUMCAD,
R036DEP.CODDEP R036DEPCODDEP,
R036DEP.NOMDEP R036DEPNOMDEP
FROM
(R034FUN INNER JOIN R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP)
Left Outer Join:
SubstituiFrom ("Detalhe_1", "(R034FUN left outer join R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP AND R034FUN.NUMCAD = R036DEP.NUMCAD)", "");
SELECT
R034FUN.NUMEMP R034FUNNUMEMP,
R034FUN.TIPCOL R034FUNTIPCOL,
R034FUN.NOMFUN R034FUNNOMFUN,
R036DEP.NUMEMP R036DEPNUMEMP,
R036DEP.TIPCOL R036DEPTIPCOL,
R036DEP.NUMCAD R036DEPNUMCAD,
R036DEP.CODDEP R036DEPCODDEP,
R036DEP.NOMDEP R036DEPNOMDEP
FROM
(R034FUN LEFT OUTER JOIN R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP AND R034FUN.NUMCAD = R036DEP.NUMCAD)
Right Outer Join:
SubstituiFrom ("Detalhe_1", "(R034FUN right outer join R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP AND R034FUN.NUMCAD = R036DEP.NUMCAD)", "");
SELECT
R034FUN.NUMEMP R034FUNNUMEMP,
R034FUN.TIPCOL R034FUNTIPCOL,
R034FUN.NUMCAD R034FUNNUMCAD,
R036DEP.NUMEMP R036DEPNUMEMP,
R036DEP.TIPCOL R036DEPTIPCOL,
R036DEP.NUMCAD R036DEPNUMCAD,
R036DEP.CODDEP R036DEPCODDEP,
R036DEP.NOMDEP R036DEPNOMDEP
FROM
(R034FUN RIGHT OUTER JOIN R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP AND R034FUN.NUMCAD = R036DEP.NUMCAD)
Natural Inner Join:
SubstituiFrom ("Detalhe_1", "(R034FUN NATURAL INNER JOIN R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP)", "");
SELECT
R034FUN.TIPCOL R034FUNTIPCOL,
R034FUN.NUMCAD R034FUNNUMCAD,
R034FUN.NOMFUN R034FUNNOMFUN,
R036DEP.NUMEMP R036DEPNUMEMP,
R036DEP.TIPCOL R036DEPTIPCOL,
R036DEP.NUMCAD R036DEPNUMCAD,
R036DEP.CODDEP R036DEPCODDEP,
R036DEP.NOMDEP R036DEPNOMDEP
FROM
(R034FUN NATURAL INNER JOIN R036DEP ON R034FUN.NUMEMP = R036DEP.NUMEMP)
Keyed Join:
SubstituiFrom ("Detalhe_1", "(R034FUN keyed INNER JOIN R030EMP)", "");
SELECT
R034FUN.NUMEMP R034FUNNUMEMP,
R034FUN.TIPCOL R034FUNTIPCOL,
R034FUN.NUMCAD R034FUNNUMCAD,
R034FUN.NOMFUN R034FUNNOMFUN
FROM
(R034FUN KEYED INNER JOIN R030EMP)
Observação:
- O uso desta função não garante que o SELECT funcione, é necessário conhecer e verificar todos os campos que o SELECT irá conter para fazer a montagem adequada das junções e relacionamentos e conseguir utilizar esta função.
- A função SubstituiFrom altera apenas as tabelas que estão ligadas diretamente na seção Detalhe, ou seja, que podem ser visualizadas na propriedade Relacionamentos da seção Detalhe.
- Nos casos em que essa função for utilizada em conjunto com a função InsClauSQLWhere (inclusão de cláusulas WHERE no comando SQL), com o objetivo de remover alguma tabela inserida no FROM, devido à utilização da função de inclusão, é necessário dar preferência para a função InsSQLWhereSimples, pois nesta função as tabelas referenciadas no SQL não são incluídas na cláusula FROM do comando SQL.
Nota
Função disponível para os sistemas Gestão Empresarial PME | GO UP, Gestão Empresarial | ERP, Gestão de Pessoas | HCM e Ronda Senior.