...
Assim como no exemplo anterior os relacionamentos são representados usando a representação do MER.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
user function AtuSXHelpQuery() Local cVersion := "000003" Local cProject := "000017" Local cPackage := Space( 6 ) Local cTable := "ZXH" Local cQuery := "" Local cAliasTmp := "" //Aqui faremos a Query para retornar os Helps //Os campos Filial foram incluídos principalmente para melhorar a performance da query //nessa primeira parte da query retorno os Helps do Brasil cQuery += "SELECT * FROM " + RetSQLName("ZXH") + " ZXH " cQuery += "INNER JOIN " + RetSQLName("ZXT") + " ZXT ON ZXH.ZXH_IDPRB = ZXT.ZXT_COD AND " cQuery += "ZXT.ZXT_IDZA8 = 1 AND ZXT.ZXT_FILIAL = '" + xFilial("ZXT") + "' AND " cQuery += "ZXH.ZXH_FILIAL = '" + xFilial("ZXH") + "' AND " //A função ASXVerFil retorna o filtro de versão, projeto e pacote levando em consideração as heranças cQuery += ASXVerFil(3, cTable, cVersion, cProject, cPackage, AsxUniqKey( cTable ), cTable ) + " AND " //Aqui filtro apenas os helps que tabém existem na subquery, a qual retorna o helps do idioma 3, comparando //seus textos, ou seja o texto no idioma 1 tem que ser igual ao idioma 3 //Como armazenamos os helps em binário, utilizamos a função Cast para converter o tipo de dado cQuery += "EXISTS " cQuery += "( SELECT * from " + RetSQLName("ZXT") + " ZXT2 WHERE " cQuery += "ZXT2.ZXT_IDZA8 = 3 AND ZXT2.ZXT_COD = ZXT.ZXT_COD AND D_E_L_E_T_ =' ' AND " cQuery += "CAST( ZXT2.ZXT_TEXTO AS VARBINARY ) = CAST( ZXT.ZXT_TEXTO AS VARBINARY ) )" cAliasTmp := getNextAlias() dbUseArea( .T., "TOPCONN", TcGenQry( ,, ChangeQuery( cQuery ) ), cAliasTmp, .F., .T. ) return |
...
Os relacionamentos entre as tabelas estão destacados pelas linhas de relacionamento do modelo do MER.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
user function AtuSXSX3Query() Local cVersion := "000003" // versão 12 Local cProject := "000017" // projeto release incremental Local cPackage := Space( 6 ) Local cTable := "ZY3" Local cTable2 := "ZX3" Local cTable3 := "ZY2" Local cQuery := "" Local cAliasTmp := "" //Aqui faremos a Query para retornar os textos da SX3 //Os campos Filial foram incluídos principalmente para melhorar a performance da query cQuery += "Select * from " + RetSQLName("ZY3") + " ZY3 " cQuery += "INNER JOIN " + RetSQLName("ZX3") + " ZX3 ON ZY3.ZY3_CAMPO = ZX3.ZX3_CAMPO AND " cQuery += " ZX3.ZX3_FILIAL = '" + xFilial("ZX3") + "' AND ZY3.ZY3_FILIAL = '" + xFilial("ZY3") + "' AND " // cria um trecho de query implementando o conceito de herança do ATUSX cQuery += ASXVerFil(3, cTable, cVersion, cProject, cPackage, AsxUniqKey( cTable ), cTable ) + " AND " cQuery += ASXVerFil(3, cTable2, cVersion, cProject, cPackage, AsxUniqKey( cTable2 ), cTable2 ) + " " cQuery += "INNER JOIN " + RetSQLName("ZY2") + " ZY2 ON ZY2.ZY2_ALIAS = ZY3.ZY3_ALIAS AND " cQuery += " ZY2.ZY2_FILIAL = '" + xFilial("ZY2") + "' AND " // cria um trecho de query implementando o conceito de herança do ATUSX cQuery += ASXVerFil(3, cTable3, cVersion, cProject, cPackage, AsxUniqKey( cTable3 ), cTable3 ) + " " //Aqui filtro por Owner e vejo se o titulo em portugues é igual ao ingles cQuery += "INNER JOIN " + RetSQLName("ZA0") + " ZA0 ON ZA0.R_E_C_N_O_ = ZY2.ZY2_IDZA0 AND " // Exemplo filtrando por onwer SIGAFAT cQuery += "ZA0.ZA0_NOME = 'SIGAFAT' AND ZX3.ZX3_TITPOR = ZX3.ZX3_TITENG" cAliasTmp := getNextAlias() dbUseArea( .T., "TOPCONN", TcGenQry( ,, ChangeQuery( cQuery ) ), cAliasTmp, .F., .T. ) return |
...