Pergunta

Eu estou usando o Crystal Reports incluído com VisualStudio 2005. Eu gostaria de mudar a imagem que é exibida no relatório em tempo de execução idealmente através da construção de um caminho para o arquivo de imagem e, em seguida, tem que imagem apresentada no relatório.

Alguém já foi capaz de fazer isso com esta versão do Crystal Reports?

Foi útil?

Solução

No trabalho que fazemos isso, empurrando a imagem (s) no relatório como campos de uma tabela de dados. Não é bonito, mas ele começa o trabalho feito. Naturalmente, esta solução requer que você enviar dados para os relatórios através de um DataSet. Eu sempre senti isso foi um hack na melhor das hipóteses. Eu realmente gostaria que os parâmetros de imagem eram uma possibilidade com CR.

Editar:. É importante notar, se você está ligando seu relatório de cristal para objetos antigos simples que você deseja expor uma propriedade byte [] para o relatório de tratar isso como uma imagem

Outras dicas

Eu finalmente chegou a uma solução usando a ponta byte[] postado aqui por Josh.

Esta solução se aplica se você estiver usando uma planície C # objeto de idade para preencher seus Crystal Reports (veja http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-in -CSharp / para obter informações sobre esta abordagem).

Na sua classe C #, inserir o seguinte código:

private static byte[] m_Bitmap = null;

public byte[] Bitmap
{
   get
   {
      FileStream fs = new FileStream(bitmapPath, FileMode.Open);
      BinaryReader br = new BinaryReader(fs);
      int length = (int)br.BaseStream.Length;
      m_Bitmap = new byte[length];
      m_Bitmap = br.ReadBytes(length);
      br.Close();
      fs.Close();
      return m_Bitmap;
   }
}

Agora, atualizar seu C Mapeamento # objeto no CR usando a opção "Verificar banco de dados". então você deve ver a propriedade Bitmap como um campo CR. Basta arrastá-lo para o formulário. Será do tipo IBlobFieldObject. Quando você corre, você deve ver a sua imagem.

Eu também tive esta pergunta (e votou seu acima)!

[I, desde então, encontrou uma solução usando uma matriz de bytes através de um C propriedade # Object - ver Resposta separado. Deixando esta resposta aqui para referência ...]

Aqui está o que eu tenho visto sugerido (mas eu tentei e falhou em C # -2005 e C # -2008).

  1. Escolha um diretório e colocar um BMP lá (por exemplo, "C: \ Temp \ image.bmp").
  2. A partir do CR-Designer a) direito do clique-> Inserir-> Objeto OLE ... b) Selecione "Criar do arquivo" c) Marque a opção "Link" caixa d) Procurar e escolher o bmp definido no passo 1 e) Clique em OK f) Coloque a imagem no formulário.
  3. Substituir / atualizar a imagem em tempo de execução em seu código C #. Em teoria, desde que você inseriu um link para um arquivo de imagem, ele será atualizado quando o formulário é atualizado.

Eu não tive sorte com esta abordagem. A imagem aparece quando eu primeiro criar o formulário (passo 2). Mas em tempo de execução, a imagem não é actualizado para mim. Deste ponto em diante, as coisas ficam realmente estranho . Parece que CR armazena algum tipo de imagem que simplesmente não vai embora. Eu posso excluir o link objeto OLE no CR-Designer, mas se eu recriá-lo, eu sempre chegar uma caixa preta do mesmo tamanho que a imagem original (mesmo se eu mudar o tamanho da image.bmp).

Você também pode usar uma fórmula condicional para definir a localização de uma imagem. Consulte Crystal Reports: dinâmicos Imagens

Tente usar uma combinação de usar um parâmetro que contém o caminho da imagem e o tutorial desta página: http://www.idautomation.com/crystal/streaming_crystal.html

Em seguida, na etapa # 8, use o parâmetro em vez de um caminho hard-coded.

Outra opção que eu encontrei útil é inserir as imagens que você gostaria de usar. Posicione o gráfico em conformidade, em seguida, clique com o botão direito do mouse no gráfico e ir para formato gráfico> Common. Marque a caixa Suprimir, em seguida, clique no botão fórmula, como x-2. Uma vez na janela de fórmula, basta adicionar o código para determinar se o gráfico deve ser suprimida ou não.

No meu caso, eu estava construindo um modelo de fatura para várias entidades. Na janela de fórmula, eu simplesmente escreveu COMPANY <> 1100 o que significa que cada vez que a factura foi executado por uma empresa diferente de 1100, o gráfico 1100 seria suprimida.

Esperamos que este facilita a vida ...

Assim como Josh disse .. Você vai ter que empurrar a imagem com um conjunto de dados. Ou, colocando a imagem em uma tabela de banco de dados uma vez e puxe-o em muitas vezes com um sub-relatório.

A versão atual do Crystal Reports (para Visual Studio 2012+) que eu uso com o Visual Studio 2015 suporta esta função. Siga os seguintes passos:

  1. Inserir uma imagem em seu relatório. Isto irá servir como o seu espaço reservado. '
  2. Clique direito a imagem e escolha Formatar Objeto Right Click imagem
  3. Selecione a guia Imagem e pressione o botão fórmula Tab Imagem
  4. janela fórmula A será aberta. Inserir uma fórmula que vai encontrar suas fotos como links.

    if ({@ isDonor} = "1") em seguida, " http://www.ny.org/images/aaf/picture1.jpg " mais " http://www.ny.org/images/aaf/picture2.jpg " Formula editor E está feito!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top