Tenho um relatório (RBuilder) que precisava ser armazenado no banco de dados (firebird).
Eu sei que existem vários meios de se fazer isso, mas eu precisava de um jeito que não necessitasse gravar o arquivo em disco para então salvar no banco.
Consegui fazer isso, utilizando TMemoryStream e o referido relatório foi armazenado (compactado) no banco.
Compactado para ocupar menos espaço e tal... Para isso usei um componente da VCLZip.
Bem relatório armazenado, veio o grande problema em que me encontro.
Como recuperar este relatório do banco?
Bem, até o momento consegui fazer os mesmos procedimentos de gravação para efetuar a recuperação.
Explicando melhor:
Para recuperar o relatório, primeiro eu tenho que salvar o valor do campo da tabela em disco (report.zip), depois, armazenar este arquivo em um stream para descompactá-lo. Depois de descompacado, tenho que gravar o arquivo (report.raf) em disco também, para que o ArchiveReader possa lê-lo.
Desta forma, o relatório gravado é gerado.
Mas eu quero (e preciso) fazer com que o ArchiveReader leia o relatório diretamente de um TMemoryStream. Será que existe algum meio, ou terei que criar um componente herdado do ArchiveReader com a propriedade de ler de um stream?
Pergunta
Fernando Barreto
Olá pessoal.
O negócio é o seguinte.
Tenho um relatório (RBuilder) que precisava ser armazenado no banco de dados (firebird).
Eu sei que existem vários meios de se fazer isso, mas eu precisava de um jeito que não necessitasse gravar o arquivo em disco para então salvar no banco.
Consegui fazer isso, utilizando TMemoryStream e o referido relatório foi armazenado (compactado) no banco.
Compactado para ocupar menos espaço e tal... Para isso usei um componente da VCLZip.
Bem relatório armazenado, veio o grande problema em que me encontro.
Como recuperar este relatório do banco?
Bem, até o momento consegui fazer os mesmos procedimentos de gravação para efetuar a recuperação.
Explicando melhor:
Para recuperar o relatório, primeiro eu tenho que salvar o valor do campo da tabela em disco (report.zip), depois, armazenar este arquivo em um stream para descompactá-lo. Depois de descompacado, tenho que gravar o arquivo (report.raf) em disco também, para que o ArchiveReader possa lê-lo.
Desta forma, o relatório gravado é gerado.
Mas eu quero (e preciso) fazer com que o ArchiveReader leia o relatório diretamente de um TMemoryStream. Será que existe algum meio, ou terei que criar um componente herdado do ArchiveReader com a propriedade de ler de um stream?
Agradecido.
Editado por Fernando BarretoLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.