Ricerca 
it-ITen-US
Registrazione
Accedi
In-Vesti Dotnetwork
IN-VESTI DNW!!!
Sono finalmente arrivate le nuovissime T-Shirt di DotNetWork!!! Con soli 15,00 € ci sosterrai nelle spese di gestione della Community e ti invieremo a casa una splendida maglietta.
Se vuoi contribuire al mantenimento di DotNetWork.it Vai sulla pagina Iscrizioni
Effettua il pagamento usando IWBank
Click per andare alla pagina di Iscrizione
Oppure un Bonifico bancario (le coordinate sono sulla pagina Iscrizioni), inviaci una mail a support@dotnetwork.it indicandoci la tua taglia e l'indirizzo di spedizione.  Non appena verificata la ricezione del pagamento provvederemo a spedirti la tua T-Shirt.  Le magliette sono disponibili nelle taglie S-M-L-XL-XXL (in caso di esaurimento di una delle taglie, indica quella di "Backup"). Grazie per IN-VESTIRTI con NOI!!!
.:DotNetWork Founders:.
    Stampa     


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.
Autore Messaggi

Posts:142

--
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:433

--
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:142

--
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:433

--
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:142

--
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:662

--
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:142

--
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
Panoramica del Sistema dei Comandi
Come iniziare a capire com'è fatto WPF (parte 5)
2007/09/30 | Autore: Patrizia Cosolo
SQL Server Nozioni base (parte 2)
Come creare un database in SQL Server Usando solo il codice SQL
2008/03/09 | Autore: Sabrina Cosolo
Icone e Toolstrip
Icone della giusta dimensione e Toolstrip modificate a runtime
2009/06/28 | Autore: Sabrina Cosolo
Panoramica degli elementi base del WPF
Come iniziare a capire com'è fatto il WPF [Windows Presentation Foundation] (parte 2)
2007/07/30 | Autore: Patrizia Cosolo
SQL Server 2000/2005 Manutenzione Database
Uso di DBCC ShowContig e di sys.dm_db_index_physical_stats
2007/08/05 | Autore: Sabrina Cosolo
Le nostre Librerie nella finestra .NET di Add reference
Come fare in modo di visualizzare le nostre librerie nella finestra .NET dell'Add Reference di Visual Studio
2008/07/27 | Autore: Sabrina Cosolo
Fritto Misto - Classi di uso comune (parte 5)
Helper: Eccezioni personalizzate e Messaggi compositi
2007/10/27 | Autore: Sabrina Cosolo
Ereditarietà in pillole (Parte 1)
Come creare una TreeView personalizzata
2008/03/22 | Autore: Alberto De Luca
    Stampa     
Home|Forums|Blogs|Mappa del sito
© 2007-2010 by DotNetWork  .:.  Condizioni d'uso  .:.  Privacy  .:.  Accedi  .:.