Função que cria uma string para Join de filiais para SQL, analisando o layout da empresa e os modos de compartilhamento.


Parâmetros:

NomeTipoObrigatórioDefaultDescrição
cAlias1CaractereX
Alias da primeira tabela
cAlias2CaractereX
Alias da segunda tabela
cTbAlias1Caractere
cAlias1Alias SQL da primeira tabela
cTbAlias2Caractere
cAlias2Alias SQL da segunda tabela
lPrefixoLógico
.T.Informa se deverá retornar o prefixo do alias
cDbMsCaractere
TcGetDb()Banco de dados utilizado
lFilCompJoinLógico
.F.Indica que irá utilizar o campo de filial na montagem do join avaliando seu compartilhamento

Sintaxe: FwJoinFilial(cAlias1, cAlias2) → string


Exemplo de uso - Embedded SQL
local cAlias as character
local cJoin as character

cAlias := GetNextAlias()
cJoin := "%" + FWJoinFilial("SRA", "SRC") + "%"
 
BEGINSQL ALIAS cAlias
    SELECT
        SRA.RA_FILIAL, 
        SRA.RA_MAT,
        SRC.RC_PD,
        SRC.RC_VALOR
    FROM
        %table:SRA% SRA
    INNER JOIN  %table:SRC% SRC ON
        SRA.RA_MAT = SRC.RC_MAT AND
        %exp:cJoin%
    WHERE
        SRA.RA_MAT = '000001' AND
        SRA.RA_FILIAL = 'E01U01F01'    
ENDSQL
Exemplo de uso - MPSysOpenQuery
local cAlias as character
local cJoin as character
local cQuery as character

cJoin := FWJoinFilial("SRA", "SRC")

cQuery := "SELECT "
cQuery += "     SRA.RA_FILIAL, "
cQuery += "     SRA.RA_MAT, "
cQuery += "     SRC.RC_PD, "
cQuery += "     SRC.RC_VALOR "
cQuery += " FROM "
cQuery += "     " + RetSqlName("SRA") + " SRA "
cQuery += " INNER JOIN " + RetSqlName("SRC") + " SRC ON "
cQuery += "     SRA.RA_MAT = SRC.RC_MAT AND "
cQuery += FWJoinFilial("SRA", "SRC")
cQuery += " WHERE "
cQuery += "     SRA.RA_MAT = '000001' AND "
cQuery += "     SRA.RA_FILIAL = 'E01U01F01' "

cAlias := MPSysOpenQuery(cQuery)