+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 Apr 2026
  1. CeceliaWysel

    5 Pontos

  2. VernonSchaw

    5 Pontos

  3. MargieOsterh

    5 Pontos

200 pontos
Melhores 2026 Apr 06 - 12
  1. danilo.pereira

    96 Pontos

  2. danilo.pereira

    96 Pontos

  3. danilo.pereira

    96 Pontos

  4. willian.metalsystem

    69 Pontos

  5. henrique.muller

    62 Pontos

  6. luciano.fronza

    61 Pontos

  7. luciano.fronza

    61 Pontos

  8. luciano.fronza

    61 Pontos

  9. diuari.molinari

    52 Pontos

  10. diuari.molinari

    51 Pontos

518 perguntas
567 respostas
389 comentários
772 usuários