1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[RESOLVIDO] Programa Template Relatório DDK em RTF

Discussão em 'EMS , HCM e Totvs 11' iniciado por thiagoladeira, Janeiro 12, 2017.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. thiagoladeira

    thiagoladeira Sem Pontuação

    Prezados,

    Alguém possui algum codigo-fonte de algum relatório que gera o resultado no formato RTF?

    Gostaria de um codigo de exemplo,alguém poderia disponibilizar?
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    na verdade, o RTF é gerado em excel ou word, vc le ele como se fosse um txt (input from), e salve novamente (output to), quando vc monta o RTF vc marca onde o progress deve substituir dados, eu costumo usar #nome-emit#, #dt-emis-nota#, então eu leio o RTF, usando o comando replace eu substituo a minha TAG pelo conteudo do campo que ela se refere e salvo novamente, depois, pra abrir automaticamente o resultado, usando o os-command, faço "start nomeArquivo.rtf" e tudo funciona lindamente.
  3. thiagoladeira

    thiagoladeira Sem Pontuação

    Obrigado pelo apoio consegui o exemplo abaixo, por me estou com dificuldades em implementar o detalhe do cabeçalho do relatório. Quando coloco find first da tabela e traz o primeiro registro do for each e traz perfeitamente a informação. Quando existe mais de um registro na busca ele não funciona. Segue o exemplo abaixo:


    /* Definiçãoe de Variaveis */
    DEF VAR ch-app-word AS COM-HANDLE NO-UNDO.
    DEF VAR gcDiretorio AS CHAR NO-UNDO.
    DEF VAR cLinha AS CHAR NO-UNDO.
    DEF VAR pcArq AS CHAR NO-UNDO.
    DEF VAR cSeqAux AS CHAR NO-UNDO.
    DEF STREAM sInput.
    DEF STREAM sOutput.
    ASSIGN pcArq = "Emb_Sobres.doc"
    gcDiretorio = SEARCH("layout\teste2.rtf").
    INPUT STREAM sInput FROM VALUE(gcDiretorio).
    OUTPUT STREAM sOutput TO VALUE(SESSION:TEMP-DIRECTORY + "/" + pcArq) NO-CONVERT.
    /***************************************************************************/
    /************************ Programa aqui ********************************/
    /***************************************************************************/
    FOR EACH ri_emb_sobres WHERE ri_emb_sobres.ries_nro = "002/2017" :

    FIND FIRST itens_ri_emb_sobres WHERE itens_ri_emb_sobres.ries_nro = ri_emb_sobres.ries_nro NO-LOCK NO-ERROR.
    IF NOT AVAIL itens_ri_emb_sobres THEN NEXT.

    REPEAT:
    IMPORT STREAM sInput UNFORMAT cLinha.
    IF INDEX(cLinha,"#") > 0 THEN DO:

    /*** Tabela ri_emb_sobres ****/
    ASSIGN cLinha = REPLACE(cLinha, "#RIES",STRING(ri_emb_sobres.ries_nro))
    cLinha = REPLACE(cLinha, "#DATA",string(ri_emb_sobres.dt-criacao))
    cLinha = REPLACE(cLinha, "#Cliente",string(ri_emb_sobres.nome-cliente))
    cLinha = REPLACE(cLinha, "#SONDA",string(ri_emb_sobres.sonda))
    cLinha = REPLACE(cLinha, "#poco",string(ri_emb_sobres.poco))
    cLinha = REPLACE(cLinha, "#sistema",string(ri_emb_sobres.sistema))
    cLinha = REPLACE(cLinha, "#notafiscal",string(ri_emb_sobres.nota-fiscal))
    cLinha = REPLACE(cLinha, "#transportadora",string(ri_emb_sobres.transportadora))
    cLinha = REPLACE(cLinha, "#placa",string(ri_emb_sobres.placa-veiculo))
    cLinha = REPLACE(cLinha, "#motorista",string(ri_emb_sobres.motorista))
    cLinha = REPLACE(cLinha, "#identidade",string(ri_emb_sobres.identidade))
    cLinha = REPLACE(cLinha, "#rt",string(ri_emb_sobres.rt))
    cLinha = REPLACE(cLinha, "#observacao",string(ri_emb_sobres.observacao))
    .

    /*** Tabela itens_ri_emb_sobres ****/
    ASSIGN cLinha = REPLACE(cLinha, "#item",string(itens_ri_emb_sobres.it-codigo))
    cLinha = REPLACE(cLinha, "#ri",string(itens_ri_emb_sobres.ri))
    cLinha = REPLACE(cLinha, "#desc-item",string(itens_ri_emb_sobres.descricao))
    cLinha = REPLACE(cLinha, "#quant",string(itens_ri_emb_sobres.quantidade))
    .

    IF itens_ri_emb_sobres.aprovacao = YES THEN
    ASSIGN cLinha = REPLACE(cLinha, "#aprov","X")
    cLinha = REPLACE(cLinha, "#reprov","").
    ELSE

    ASSIGN cLinha = REPLACE(cLinha, "#reprov","X")
    cLinha = REPLACE(cLinha, "#aprov","").
    END.
    PUT STREAM sOutput UNFORMATTED cLinha SKIP.
    end.
    END.
    PUT STREAM sOutput "~\par }}".
    INPUT STREAM sInput CLOSE.
    OUTPUT STREAM sOutput CLOSE.
    CREATE 'Word.Application':U ch-app-word. /* Cria uma aplica»’o WORD */
    ch-app-word:WindowState = 2. /* O estado dois para o Word ² 2-minimizado */
    ch-app-word:VISIBLE = yes. /* Apenas para n’o mostrar que o word estÿ sendo utilizado em tela */
    ch-app-word:Documents:ADD(SESSION:TEMP-DIRECTORY + "/" + pcArq). /* Inclui arquivo */
    RELEASE OBJECT ch-app-word. /* Elimina o endere»o utilizado para o WORD na mÿquina */

    Arquivos Anexados:

  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Pra cada iteração do seu for each tem que repetir ......
    PUT STREAM sOutput "~\par }}".
    INPUT STREAM sInput CLOSE.
    OUTPUT STREAM sOutput CLOSE.
    CREATE 'Word.Application':U ch-app-word. /* Cria uma aplica»’o WORD */
    ch-app-word:WindowState = 2. /* O estado dois para o Word ² 2-minimizado */
    ch-app-word:VISIBLE = yes. /* Apenas para n’o mostrar que o word estÿ sendo utilizado em tela */
    ch-app-word:Documents:ADD(SESSION:TEMP-DIRECTORY + "/" + pcArq). /* Inclui arquivo */
    RELEASE OBJECT ch-app-word. /* Elimina o endere»o utilizado para o WORD na mÿquina */

    Se não ele vai ficar só com o ultimo ....
  5. thiagoladeira

    thiagoladeira Sem Pontuação

    Richard Edgar,

    Tentei colocar este codigo dentro da clausula do for each, porém sem sucesso não funciona.
  6. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    só vendo o codigo para testar e te dizer o erro.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página