Ricerca
 Italiano (Italia) English (United States)
Registrazione
Accedi
DotNetWork Forums
Immagini su report Rdlc a run time
Ultimo Post 25 nov 2009 12.51 by Gianni. 6 Risposte.
Stampa immediata
Ordina:
PrevPrev ProssimoProssimo
Non sei autorizzato ad inviare una risposta.
AutoreMessaggi

Posts:132

--
20 nov 2009 15.04 
Sto provando a caricare a run time delle immagini su un report rdlc.

Uso questa Sub

************

Private Sub Prodotti_RowChanged(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)

If e.Action = DataRowAction.Add Then

e.Row("Image") = StreamFile("D:\Documenti\Immagini\Zero\CE.jpg")

End If

End Sub



Private Function StreamFile(ByVal filename As String) As System.Byte()

Dim fs As New FileStream(filename, FileMode.Open, FileAccess.Read)

' Create a byte array of file stream length

Dim ImageData As Byte() = New System.Byte(fs.Length - 1) {}

'Read block of bytes from stream into the byte array

fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length))

'Close the File Stream

fs.Close()

'return the byte data

Return ImageData

End Function

*************

Nel report ho inserito un campo di tipo System.Byte che al caricamento dei dati dovrebbe essere riempito dalla funzione StreamFile.

Il problema è che mi viene sempre generato l'errore:

Impossibile eseguire il cast di oggetti di tipo 'System.Byte[]' sul tipo 'System.IConvertible'.Impossibile archiviare <System.Byte[]> nella colonna IMAGE. Il tipo previsto è Byte.

La procedura l'ho trovata scritta (e funzionante) in C#, ho provato a riscriverla in VB.NET ma ottengo sempre l'errore sopra.

AIUTO!!!!!




Questo messaggio di posta elettronica contiene informazioni di carattere confidenziale rivolte esclusivamente al destinatario sopra indicato.
E' vietato l'uso, la diffusione, distribuzione o riproduzione del messaggio intero o di parte di esso a chiunque non ne sia il diretto destinatario. Nel caso aveste ricevuto questo messaggio di posta elettronica per errore, siete pregati di segnalarlo immediatamente al mittente e distruggere quanto ricevuto (compresi i file allegati) senza farne copia.
Qualsiasi utilizzo non autorizzato del contenuto di questo messaggio costituisce violazione dell'obbligo di non prendere cognizione della corrispondenza tra altri soggetti, salvo più grave illecito, ed espone il responsabile alle relative conseguenze.


Confidentially notice. This e-mail transmission may contain legally privileged and/or confidential information. Please do not read it if you are not the intended recipient(S).
Any use, distribution, reproduction or disclosure by any other person is strictly prohibited.
If you have received this e-mail in error, please notify the sender and destroy the original transmission and its attachments without reading or saving it in any manner.



Posts:407

--
20 nov 2009 15.28 
A me pare che la riga:
Impossibile eseguire il cast di oggetti di tipo 'System.Byte[]' sul tipo 'System.IConvertible'.Impossibile archiviare nella colonna IMAGE. Il tipo previsto è Byte.

dica chiaramente che non puoi mettere un array di bytes in un campo image.

le immagini da file si caricano cosi:

in c#
Image myImg = Image.FromFile("nomefile");
Bitmap myBmp = Bitmap.FromFile("nomefile");

oppure, in VB:
Dim myImg as Image = Image.FromFile("nomefile")
Dim MyBmp as Bitmap = Bitmap.FromFile("nomefile")

HTH
Max

Posts:132

--
20 nov 2009 15.43 
Sono stato poco chiaro io.
La situazione è questa:
(La procedura l'ho ricavata da un esempio in C# Funzionante)
Report rdlc con dataset come source dati
Al dataset aggiungo un campo IMAGE di tipo System.Byte
Nel report inserisco una table nelle cui celle metto i campi del dtset (compreso il campo IMAGE)
praticamente ho seguito l'esempio riportato al link

http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/11/25/image-memorystream-e-file-.rdlc.aspx

Il problema è che riscrivendo la procedura in vb ottengo questo errore

________________________________

Da: Forms@dotnetwork.it [mailto:Forms@dotnetwork.it]
Inviato: venerdì 20 novembre 2009 16.29
A: Gianni Albori
Oggetto: DNW Forums: RE: Immagini su report Rdlc a run time [00003295:00004091]


www.dotnetwork.it <http://www.dotnetwork.it>

RE: Immagini su report Rdlc a run time

Forum: .NET Framework - Desktop development - Inviato da: Walimay in data 20 nov 2009 15.28
A me pare che la riga:
Impossibile eseguire il cast di oggetti di tipo 'System.Byte[]' sul tipo 'System.IConvertible'.Impossibile archiviare nella colonna IMAGE. Il tipo previsto è Byte.

dica chiaramente che non puoi mettere un array di bytes in un campo image.

le immagini da file si caricano cosi:

in c#
Image myImg = Image.FromFile("nomefile");
Bitmap myBmp = Bitmap.FromFile("nomefile");

oppure, in VB:
Dim myImg as Image = Image.FromFile("nomefile")
Dim MyBmp as Bitmap = Bitmap.FromFile("nomefile")

HTH
Max


Posts:407

--
20 nov 2009 16.03 
ok,
non ho mai fatto report rdlc pero' leggendo il messaggio di errore e l'articolo che hai indicato:

Articolo (cit):
aggiungere una colonna denominata Immagine, con proprietà DataType impostata su System.Byte[]:

il tuo errore:
Impossibile eseguire il cast di oggetti di tipo 'System.Byte[]' sul tipo 'System.IConvertible'.Impossibile archiviare nella colonna IMAGE. Il tipo previsto è Byte.

Secondo me significa che tu stai cercando di infilare un array di bytes in un campo byte (singolo). e quasto on si puo' fare, e' pacifico.

l'articolo dice che la colonna image deve essere di tipo System.Byte[] e quindi un array di bytes. Tornando al tuo errore leggo che il tipo previsto e' Byte. che appunto e' un valore singolo !

controlla al definizione della colonna Image.

HTH
Max.

Posts:132

--
20 nov 2009 16.52 
Hai ragione :-(((

La colonna era definita System.Byte è bastato cambiarla in System.Byte[] e ora tutto funziona.


Gianni Albori - Giben International Spa
Per rispondermi mailto:gianni.albori[at]giben.it

<END-CUT>



________________________________

Da: Forms@dotnetwork.it [mailto:Forms@dotnetwork.it]
Inviato: venerdì 20 novembre 2009 17.04
A: Gianni Albori
Oggetto: DNW Forums: RE: Immagini su report Rdlc a run time [00003295:00004093]


www.dotnetwork.it <http://www.dotnetwork.it>

RE: Immagini su report Rdlc a run time

Forum: .NET Framework - Desktop development - Inviato da: Walimay in data 20 nov 2009 16.03
ok,
non ho mai fatto report rdlc pero' leggendo il messaggio di errore e l'articolo che hai indicato:

Articolo (cit):
aggiungere una colonna denominata Immagine, con proprietà DataType impostata su System.Byte[]:

il tuo errore:
Impossibile eseguire il cast di oggetti di tipo 'System.Byte[]' sul tipo 'System.IConvertible'.Impossibile archiviare nella colonna IMAGE. Il tipo previsto è Byte.

Secondo me significa che tu stai cercando di infilare un array di bytes in un campo byte (singolo). e quasto on si puo' fare, e' pacifico.

l'articolo dice che la colonna image deve essere di tipo System.Byte[] e quindi un array di bytes. Tornando al tuo errore leggo che il tipo previsto e' Byte. che appunto e' un valore singolo !

controlla al definizione della colonna Image.

HTH
Max.

Posts:469

--
25 nov 2009 12.06 

Scusami se mi intrometto, non so se il programma si riferisce anche ad un tuo recente post dove chiedevi dove salvare delle immagini se in un campo image del tuo databse o in una cartella.

Se sto dicendo qualcosa di sbagliato correggetemi.

Ho notato dal tuo codice che tu devi aggiungere la tua immagine in una datarow e pre aggiungerla fai lo streaming di un'immagina che si trova in una data cartella.
Per recuperare tempo, penso, potresti salvare l'immagine già streamingata (termine coniato da me in questo momento che significa: il risultato ottenuto dallo streaming) in un campo byte del tuo database. In questo modo penso che dovresti recuperare tempo in quanto lo streaming della tua immagina già ce l'hai e in più non sei vincolato ad un cartella che se manomessa ti manda in errore il programma.

Spero di non aver detto nulla di sbagliato ma ho usato questo sistema per un mio programma e mi sono trovato bene.

Ciao
Hidden


Posts:132

--
25 nov 2009 12.51 
Hai ragione, avevo pensato anch'io di provare una strada del genere. Penso che appena terminato il programma comincerò a memorizzare le immagini "streamizzate" in una tabella

Ciao e grazie
Non sei autorizzato ad inviare una risposta.

Active Forums 4.1
       
Articoli Pubblicati
Miniguida alla OOP con il .NET Framework- Parte I
Come prendere per mano un tipico programmatore VB6
2008/07/27 | Autore: Alberto De Luca
Codedom Introduzione all'uso parte2
Costruire il generatore di codice
2009/11/07 | Autore: Sabrna Cosolo
Fritto misto - Classi di uso comune (parte 2)
Helper: Una classe per la Serializzazione XML delle classi dati
2007/10/21 | Autore: Sabrina Cosolo
Miniguida alla OOP con il .NET Framework- Parte IV
Come gestire l'ereditarietà
2009/07/17 | Autore: Alberto De Luca
Fritto Misto - Classi di uso comune(parte 3)
Helper: Due interfacce per implementare classi Entity
2007/10/22 | Autore: Sabrina Cosolo
Lavorare con gli Array
Il problema dello zaino
2007/07/29 | Autore: Alberto De Luca
Codedom Introduzione all'uso parte 1
Generare automaticamente codice C# o VB usando CodeDom ed il framework .NET stesso
2009/11/07 | Autore: Sabrina Cosolo
Panoramica delle Proprietà Subordinate (Dependency Properties)
Come iniziare a capire WPF Parte 6
2007/11/22 | Autore: Patrizia Cosolo
   Stampa     
Home|Community|Contenuti|Forums|Blogs|Workshops
© 2007-2010 by DotNetWork .:. Condizioni d'uso .:. Privacy .:. Accedi .:.