+3 votos
293 visitas
Tenho um relatório que foi desenvolvido em stimulsoft e quando emitido pelo desktop ele chama a tabela virtual e eu utilizo os filtros informados pelo usuário para concatenar nas querys através do @CAMPO.

 

Porém preciso criar um processo agendado que faça a emissão de vários desses relatórios e envie por e-mail cada um de forma individual, mas não sei como passar os parâmetros para obter com o @campo de dentro do relatório.
por (115 pontos) | 293 visitas

3 Respostas

0 votos
Caso seu relatório tenha apenas um sql, você deve substituir o @CAMPO, por @CRITERIOSELECAO.

Na macro do processo você passa o filtro através da função SQLWhere = "A.HANDLE = " & query.fieldbyname("handle").asstring

Para que o filtro continue funcionando no sqlEspecial deve ser informado A.HANDLE = @CAMPO(HANDLE).

A partir da tecnologia 16 é possível utilizar variáveis de ambiente como GetSessionVar ou GetUserVar.
por (173 pontos)
0 votos

Rodrigo, acho que o ponto é como criar uma Entity e passar ela como filtro para o relatório no VBA.

Vi que até é possivel criar uma instancia (Entity) de uma Tabela Virtual em VBA, mas como passa-lá ao CSReportPrinter?

Em C# podemos fazer assim (pelo menos aqui funciona):

EntityDefinition entityDefinition = 
    EntityDefinition.GetByName("TV_FILTRO000");

EntityBase entities = Entity.Create(entityDefinition);

entities.Fields["ESTADO"] = "21";
entities.Fields["PRESTADOR"] = "270";

var processId = AppContext.Report.EmitAsyncReport(
    HandleDoRelatorio, "PDF", null, entities, null, true, true);

 

Acho que se fosse possivel fazer o mesmo em VBA as querys dos relatórios iriam ficar muito mais limpas, para a gente que tem que fazer muitos relatórios serem gerados a partir de botões dentro do sistema.

por (23 pontos)
editado por
–1 voto
Rodrigo,

Segue documentação para emissão de relatórios stimulsoft via API:

http://wiki.benner.com.br/wiki/index.php?title=Emitindo_relat%C3%B3rios_por_API
por (367 pontos)
André, obrigado pela resposta, porém eu já tinha visto essa documentação e ela não explica a minha dúvida. :(
Melhores Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários