Domanda

Sto utilizzando Crystal Reports incluso in VisualStudio 2005. Vorrei cambiare l'immagine che viene visualizzata sul report in fase di esecuzione idealmente creando un percorso al file di immagine e quindi quell'immagine viene visualizzata sul rapporto.

Qualcuno è stato in grado di farlo con questa versione di Crystal Reports?

È stato utile?

Soluzione

Al lavoro lo facciamo spingendo l'immagine (i) nel report come campi di un datatable. Non è carino, ma fa il lavoro. Naturalmente, questa soluzione richiede l'inserimento di dati nei report tramite un DataSet. Ho sempre pensato che questo fosse un trucco al massimo. Vorrei davvero che i parametri dell'immagine fossero una possibilità con CR.

Modifica: Vale la pena notare che, se stai vincolando il tuo report di cristallo a semplici vecchi oggetti, vuoi esporre una proprietà byte [] affinché il report lo consideri come un'immagine.

Altri suggerimenti

Ho finalmente raggiunto una soluzione usando il byte[] suggerimento pubblicato qui da Josh.

Questa soluzione si applica se si utilizza un semplice oggetto C # vecchio per popolare Crystal Reports (consultare http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-in -CSharp / per informazioni su questo approccio).

Nella tua classe C #, inserisci il seguente codice:

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;
   }
}

Ora aggiorna la mappatura degli oggetti C # in CR usando il quot &; Verifica il database " opzione. Dovresti quindi vedere la proprietà Bitmap come un campo CR. Basta trascinarlo sul modulo. Sarà di tipo IBlobFieldObject. Quando corri, dovresti vedere la tua immagine.

Ho anche avuto questa domanda (e votato la tua)!

[Da allora ho trovato una soluzione usando un array di byte tramite una proprietà Object C # - vedi risposta separata. Lasciando questa risposta qui per riferimento ...]

Ecco cosa ho visto suggerito (ma ho provato e fallito sia in C # -2005 che in C # -2008).

  1. Scegli una directory e posiziona un BMP (ad es. " C: \ Temp \ image.bmp ").
  2. Da CR-Designer a) Fare clic con il pulsante destro del mouse - > Inserisci - > Oggetto OLE ... b) Selezionare " Crea da file " c) Controllare " Link " casella di controllo d) Sfoglia e seleziona il bmp definito al passaggio 1 e) Fai clic su OK f) Posiziona l'immagine sul modulo.
  3. Sovrascrivi / aggiorna l'immagine in fase di esecuzione nel tuo codice C #. In teoria, poiché hai inserito un Link in un file di immagine, verrà aggiornato quando il modulo viene aggiornato.

Non ho avuto fortuna con questo approccio. L'immagine appare quando disegno il modulo per la prima volta (passaggio 2). Ma in fase di esecuzione, l'immagine non si aggiorna per me. Da questo punto in poi, le cose diventano davvero strane . Sembra che CR memorizzi nella cache una sorta di immagine che semplicemente non scomparirà. Posso eliminare il collegamento all'oggetto OLE in CR-Designer, ma se lo ricrea, ottengo sempre una scatola nera delle stesse dimensioni dell'immagine originale (anche se cambio la dimensione di image.bmp).

Puoi anche usare una formula condizionale per impostare la posizione di un'immagine. Vedi Crystal Reports: Dynamic Images .

Prova a utilizzare una combinazione di utilizzo di un parametro contenente il percorso dell'immagine e il tutorial in questa pagina: http://www.idautomation.com/crystal/streaming_crystal.html

Quindi, nel passaggio 8, utilizzare il parametro anziché un percorso hardcoded.

Un'altra opzione che ho trovato utile è l'inserimento delle immagini che desideri utilizzare. Posiziona l'immagine di conseguenza, quindi fai clic con il pulsante destro del mouse sull'immagine e vai su Formato grafico & Gt; Comune. Seleziona la casella Elimina, quindi fai clic sul pulsante formula, mostrato come x-2. Una volta nella finestra della formula, aggiungi semplicemente il codice per determinare se l'immagine deve essere soppressa o meno.

Nel mio caso, stavo costruendo un modello di fattura per più entità. Nella finestra della formula, ho semplicemente scritto COMPANY & Lt; & Gt; 1100, il che significa che ogni volta che la fattura veniva eseguita per una società diversa da 1100, la grafica 1100 veniva soppressa.

Speriamo che questo renda la vita più facile ...

Proprio come ha detto Josh .. Dovrai spingere l'immagine con un set di dati. In alternativa, inserire l'immagine in una tabella del database una volta ed estrarla più volte con un sottoreport.

La versione corrente di Crystal Reports (per Visual Studio 2012+) che utilizzo con Visual Studio 2015 supporta questa funzione. Segui i seguenti passi:

  1. Inserisci un'immagine nel tuo rapporto. Questo servirà come tuo segnaposto. '
  2. Fai clic con il pulsante destro del mouse sull'immagine e scegli Formato oggetto Immagine clic destro
  3. Seleziona la scheda Immagine e premi il pulsante formula Scheda Immagine
  4. Si aprirà una finestra formula. Inserisci una formula che troverà le tue foto come link.

    if ({@ isDonor} = quot &; & 1 quot;) quindi " http://www.ny.org/images/aaf/ picture1.jpg quot &; else " http://www.ny.org/images/aaf/ picture2.jpg quot &; Editor di formule E il gioco è fatto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top