× Linguagem de Programação ADVPL

Perguntas Relatórios Customizados

Mais
11 anos 5 meses atrás #14379 por flagsantos
Olá Pessoal,

Está é minha primeira vez no Forúm e gostaria de uma ajuda de vocês.
Pois vi que o retorno é bem rápido.

Estou customizando um relatório para minha empresa e estou com problema e não acho solução.
Neste relatório montei um query onde eu irei fazer uma concatenação de linhas. Já que eu quero que as informações que estão em linhas se transforme em uma única coluna.
Pois bem, no SQL fiz sem problemas. Mas quando eu coloco no TOTVS dá um erro de select.
O TOTVS tem alguma limitação em relação aos comandos em SQL?
Ou, para fazer o tratamento para transformar linhas em colunas no ADVPL é diferente do que estou fazendo?

Segue o pedaço do código para vocês me ajudarem:

cQuery+= "SELECT US_COD, US_NOME, US_NREDUZ, US_DDI, US_DDD, US_TEL, UPPER(US_END) US_END, UPPER(US_BAIRRO) US_BAIRRO, US_CEP, US_MUN, US_EST, US_PAIS, YA_DESCR, US_URL, US_SATIV, X5_DESCRI, US_FATANU,"
cQuery+= " CASE"
cQuery+= " WHEN US_QTFUNC = 0 THEN '< 150'"
cQuery+= " WHEN US_QTFUNC = 1 THEN '151 a 200'"
cQuery+= " WHEN US_QTFUNC = 2 THEN '250 a 300'"
cQuery+= " WHEN US_QTFUNC = 3 THEN '301 a 400'"
cQuery+= " WHEN US_QTFUNC = 4 THEN '401 a 500'"
cQuery+= " WHEN US_QTFUNC = 5 THEN '501 a 700'"
cQuery+= " WHEN US_QTFUNC = 6 THEN '701 a 1000'"
cQuery+= " WHEN US_QTFUNC = 7 THEN '1001 a 1500'"
cQuery+= " WHEN US_QTFUNC = 8 THEN '> 1501'"
cQuery+= " END US_QTFUNC "
cQuery+= ", U5_CONTAT, AC8_CARGO, U5_FONE, U5_EMAIL, AD7_DATA, YP_SEQ,"
cQuery+= " STUFF((SELECT ''+ RTRIM(YP_TEXTO) FROM SYP150 WHERE YP_CHAVE=AD7_CODMEM FOR XML PATH('')),1,3,'') YP_TEXTO[/b][/color]," // Neste pedaço que estou tendo problemas
cQuery+= " AD7_CONTAT, AD7_VEND, A3_NREDUZ"
cQuery+= " FROM" + RetSQLName("SUS")+ " SUS"
cQuery+= " INNER JOIN " + RetSQLName("SX5")+ " SX5"
cQuery+= " ON US_SATIV = X5_CHAVE"
cQuery+= " AND X5_TABELA = 'T3'"

cQuery+= " INNER JOIN " + RetSqlName("SYA")+ " SYA"
cQuery+= " ON US_PAIS = YA_CODGI"

cQuery+= " INNER JOIN " + RetSqlName("AC8")+ " AC8"
cQuery+= " ON US_COD = LEFT(AC8_CODENT,6)"
cQuery+= " AND AC8_ENTIDA = 'SUS'"
cQuery+= " AND AC8.D_E_L_E_T_= ''"

cQuery+= " INNER JOIN " + RetSqlName("SU5")+ " SU5"
cQuery+= " ON U5_CODCONT = AC8_CODCON"
cQuery+= " AND SU5.D_E_L_E_T_ = ''"

cQuery+= " INNER JOIN " + RetSqlName("AD7")+ " AD7"
cQuery+= " ON US_COD = AD7_PROSPE"

cQuery+= " INNER JOIN " + RetSQLName("SYP")+ " SYP"
cQuery+= " ON YP_CHAVE = AD7_CODMEM"
cQuery+= " AND YP_CAMPO = 'AD7_CODMEM'"
cQuery+= " AND YP_SEQ = '001'"

cQuery+= " INNER JOIN " + RetSqlName("SA3")+ " SA3"
cQuery+= " ON US_VEND = A3_COD"

cQuery+= " WHERE SUS.D_E_L_E_T_ = ''"

Alguém saberia me dar alguma dica.

Vlw

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14381 por lalberto
Respondido por lalberto no tópico Relatórios Customizados
Olá Flavia seja bem vinda ao MasterAdvpl,

poderia mandar a query pronta direto no sql para eu analisar ? e se possível anexa o fonte compactado-o.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14383 por lalberto
Respondido por lalberto no tópico Relatórios Customizados
Pode ser também o tamanho da coluna que esta sendo gerada, o protheus tem limite de 255 caracteres por campo caracter, a não ser que seja campo memo.

o idela seria vc eliminar esta coluna e na impressão tratar a tabela SYP para imprimir o texto.

Tipo

nLin := 100
Seek(xFilial("SYP")+CODIGO)
While SYP->(!Eof()) .And. SYP->CODIGO = cCODIGO
@nLin,080 PSAY SYP->YP_TEXTO

dbSkip(1)
nLin++
Enddo


Um dica

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14387 por flagsantos
Respondido por flagsantos no tópico Relatórios Customizados
Oi Luiz,

Muito Obrigado pelo retorno.
Segue a query que eu rodo no SQL:

SELECT US_COD, US_NOME, US_NREDUZ, US_DDI, US_DDD, US_TEL, UPPER(US_END) AS US_END, UPPER(US_BAIRRO) AS US_BAIRRO, US_CEP, US_MUN, US_EST, US_PAIS, YA_DESCR, US_URL, US_SATIV, X5_DESCRI, US_FATANU,
CASE
WHEN US_QTFUNC = 0 THEN '< 150'
WHEN US_QTFUNC = 1 THEN '151 a 200'
WHEN US_QTFUNC = 2 THEN '250 a 300'
WHEN US_QTFUNC = 3 THEN '301 a 400'
WHEN US_QTFUNC = 4 THEN '401 a 500'
WHEN US_QTFUNC = 5 THEN '501 a 700'
WHEN US_QTFUNC = 6 THEN '701 a 1000'
WHEN US_QTFUNC = 7 THEN '1001 a 1500'
WHEN US_QTFUNC = 8 THEN '> 1501'
END AS US_QTFUNC
, U5_CONTAT, AC8_CARGO, U5_FONE, U5_EMAIL, AD7_DATA, YP_SEQ, YP_TEXTO=STUFF((SELECT ''+ RTRIM(YP_TEXTO) FROM SYP150 WHERE YP_CHAVE=AD7_CODMEM FOR XML PATH('')) , 1 , 0 , '' ), AD7_CONTAT, AD7_VEND, A3_NREDUZ
FROM SUS150 SUS

INNER JOIN SX5150 SX5
ON US_SATIV = X5_CHAVE
AND X5_TABELA = 'T3'

INNER JOIN SYA150 SYA
ON US_PAIS = YA_CODGI

INNER JOIN AC8150 AC8
ON US_COD = LEFT(AC8_CODENT,6)
AND AC8_ENTIDA = 'SUS'
AND AC8.D_E_L_E_T_= ''

INNER JOIN SU5150 SU5
ON U5_CODCONT = AC8_CODCON
AND SU5.D_E_L_E_T_ = ''

INNER JOIN AD7150 AD7
ON US_COD = AD7_PROSPE

INNER JOIN SYP150 SYP
ON YP_CHAVE = AD7_CODMEM
AND YP_CAMPO = 'AD7_CODMEM'
AND YP_SEQ = '001'

INNER JOIN SA3150 SA3
ON US_VEND = A3_COD

WHERE SUS.D_E_L_E_T_ = ''

Logo abaixo segue meu fonte até então.
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14388 por lalberto
Respondido por lalberto no tópico Relatórios Customizados
Olha só fiz duas alterações, uma, alterei o nome da tabela temporária TRB para TRB1 pois pode haver um alias com este nome, e também eliminei a SYP da sua query e acrescentei dentro do seu IF na impressão a busca pela tabela SYP, não testei por isso será bom vc compilar e debugar ok.

espero ter ajudado.



Arquivo Anexo:

Nome do Arquivo: FICPRO1.rar
Tamanho do Arquivo:3 KB

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14390 por flagsantos
Respondido por flagsantos no tópico Relatórios Customizados
Luiz,

Muito obrigado...

Você me ajudou muito.

Abs

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.142 segundos
Joomla templates by a4joomla