Pregunta

Estoy usando los Crystal Reports incluidos con VisualStudio 2005. Me gustaría cambiar la imagen que se muestra en el informe en tiempo de ejecución idealmente al construir una ruta al archivo de imagen y luego mostrar esa imagen en el informe.

¿Alguien ha podido lograr esto con esta versión de Crystal Reports?

¿Fue útil?

Solución

En el trabajo, hacemos esto al insertar las imágenes en el informe como campos de una tabla de datos. No es bonito, pero hace el trabajo. Por supuesto, esta solución requiere que inserte datos en los informes a través de un DataSet. Siempre he sentido que este fue un truco en el mejor de los casos. Realmente desearía que los parámetros de imagen fueran una posibilidad con CR.

Editar: Vale la pena señalar, si está vinculando su informe de cristal a objetos antiguos simples, desea exponer una propiedad de byte [] para que el informe lo trate como una imagen.

Otros consejos

Finalmente llegué a una solución usando el byte[] consejo publicado aquí por Josh.

Esta solución se aplica si está utilizando un objeto C # antiguo para llenar sus informes de Crystal (consulte http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-in -CSharp / para obtener información sobre este enfoque).

En su clase C #, inserte el siguiente 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;
   }
}

Ahora, actualice su mapeo de objetos C # en CR usando " Verify Database " opción. Entonces debería ver la propiedad Bitmap como un campo CR. Simplemente arrástralo al formulario. Será del tipo IBlobFieldObject. Cuando corras, deberías ver tu imagen.

¡También tuve esta pregunta (y voté la tuya)!

[Desde entonces he encontrado una solución usando una matriz de bytes a través de una propiedad de Objeto C # - ver Respuesta separada. Dejando esta respuesta aquí como referencia ...]

Esto es lo que he visto sugerido (pero intenté y fallé tanto en C # -2005 como en C # -2008).

  1. Elija un directorio y coloque un BMP allí (por ejemplo, " C: \ Temp \ image.bmp ").
  2. Del CR-Designer a) Haga clic con el botón derecho - > Insertar - > Objeto OLE ... b) Seleccione " Crear desde archivo " c) Verifique " Enlace " casilla de verificación d) Examine y seleccione el bmp definido en el paso 1 e) Haga clic en Aceptar f) Coloque la imagen en el formulario.
  3. Sobrescribir / actualizar la imagen en tiempo de ejecución en su código C #. En teoría, dado que insertó un Link en un archivo de imagen, se actualizará cuando se actualice el formulario.

No tuve suerte con este enfoque. La imagen aparece cuando diseño el formulario por primera vez (paso 2). Pero en tiempo de ejecución, la imagen no se actualiza para mí. A partir de este momento, las cosas se ponen realmente extrañas . Parece que CR almacena en caché algún tipo de imagen que simplemente no desaparecerá. Puedo eliminar el enlace del objeto OLE en CR-Designer, pero si lo vuelvo a crear, siempre obtengo un cuadro negro del mismo tamaño que la imagen original (incluso si cambio el tamaño de image.bmp).

También puede usar una fórmula condicional para establecer la ubicación de una imagen. Consulte Crystal Reports: Dynamic Images .

Intente usar una combinación de usar un parámetro que contenga la ruta de la imagen y el tutorial en esta página: http://www.idautomation.com/crystal/streaming_crystal.html

Luego, en el paso 8, use el parámetro en lugar de una ruta codificada.

Otra opción que he encontrado útil es insertar las imágenes que le gustaría usar. Coloque el gráfico en consecuencia, luego haga clic derecho en el gráfico y vaya a Formatear gráfico & Gt; Común. Marque la casilla Suprimir, luego haga clic en el botón de fórmula, que se muestra como x-2. Una vez en la ventana de fórmula, simplemente agregue el código para determinar si el gráfico debe suprimirse o no.

En mi caso, estaba creando una plantilla de factura para varias entidades. En la ventana de fórmulas, simplemente escribí COMPANY & Lt; & Gt; 1100, lo que significaba que cada vez que la factura se ejecutaba para una compañía distinta de 1100, el gráfico 1100 se suprimía.

Espero que esto haga la vida más fácil ...

Al igual que Josh dijo ... Tendrá que empujar la imagen con un conjunto de datos. O, coloque la imagen en una tabla de base de datos una vez y tire de ella muchas veces con un subinforme.

La versión actual de Crystal Reports (para Visual Studio 2012+) que uso con Visual Studio 2015 es compatible con esta función. Siga los siguientes pasos:

  1. Inserte una imagen en su informe. Esto te servirá como tu marcador de posición ".
  2. Haga clic derecho en su imagen y elija Formatear objeto Imagen de clic derecho
  3. Seleccione la pestaña Imagen y presione el botón de fórmula Pestaña Imagen
  4. Se abrirá una ventana de fórmula. Ingrese una fórmula que encontrará sus imágenes como enlaces.

    if ({@ isDonor} = " 1 ") entonces " http://www.ny.org/images/aaf/ picture1.jpg " más " http://www.ny.org/images/aaf/ picture2.jpg " Editor de fórmulas ¡Y listo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top