+2 votos
84 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 (107 pontos) | 84 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 (155 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 (353 pontos)
André, obrigado pela resposta, porém eu já tinha visto essa documentação e ela não explica a minha dúvida. :(
Melhores May 2020
  1. henrique.muller

    18 Pontos

  2. joao.melo

    14 Pontos

  3. joseglauber

    11 Pontos

  4. SlimShady

    7 Pontos

  5. willian.metalsystem

    6 Pontos

  6. lucas.melo

    3 Pontos

  7. fluipress.luciano

    2 Pontos

  8. pajucara.wallacef

    2 Pontos

  9. jean.filho

    2 Pontos

  10. maicon.pereira

    2 Pontos

200 pontos
Melhores 2020 May 25 - 31
    433 perguntas
    476 respostas
    346 comentários
    466 usuários