Hola a todos!!! : -)
Hace poco tuve que trabajar con un reporte que contenía imagenes dinámicas y todos los ejemplos que encontré eran en C#, asi que me di a la tarea de traducir de un lenguaje a otro :) y aki presento los resultados finales :) .... espero les sea de utilidad ya que en este foro eh encontrado rutinas my utiles .... gracias por compartir y aki comparto esto con ustedes:
- Se utiliza un data set tipado ...
Public Function ConversionImagen(ByVal nombrearchivo As String) As Byte()
'Declaramos fs para poder abrir la imagen.
'Dim fs As New FileStream
'Dim br As BinaryReader
Dim fs As New FileStream ruta archivo, FileMode.Open)
Dim binario(fs.Length) As Byte
fs.Read(binario, 0, fs.Length)
fs.Close()
Return binario
End Function
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'instanciamos el datatable, datarow i dataset
Dim dt As DataTable
Dim dr As DataRow
Dim rs As DataSet
Dim comando As OleDbCommand
dt = New DataTable("tabla fotos")
rs = New DataSet("Ds4")
'creamos las mismas columnas que hay en el dataset
dt.Columns.Add("otro campo", System.Type.GetType("System.String"))
'ahora en ruta imagen (donde ira la imagen),
'le decimos que el campo sera System.Byte[] ia que
'contendra el byte[] obtenido en la funcion ConversionImagen
dt.Columns.Add("ruta imagen", System.Type.GetType("System.Byte[]"))
'abrimos la conexion
Dim sqlConn As New OleDbConnection (cadena conexion)
comando = New OleDbCommand("consulta", sqlConn)
Dim linea As OleDbDataReader
sqlConn.Open()
'creamos el data reader
linea = comando.ExecuteReader()
'mientras el datareader sea true, ira realizando el bucle
While (linea.Read())
'se instancia datarow.
dr = dt.NewRow()
dr("Comentario") = linia.GetString(1)
'
' En el caso del campo que tiene la ruta de la imagen la cosa cambia, le pasamos
'el valor del campo de la bd (ruta de la imagen) a
' la funcion ConversionImagen, que devolvera un byte[]
'que sera lo que se inserte en el DataSet, asi
' el datareport nos mostrara la imagen tal como debe
dr("campo ruta imagen") = ConversionImagen(linea.GetString(0))
'añadimos la fila al dl datatable
dt.Rows.Add(dr)
End While
'cerramos el datareader y la conexión
linea.Close()
sqlConn.Close()
'añadimos la tabla al dataset
rs.Tables.Add(dt)
Dim oRpt = New ReportDocument
Dim reporte As String
reporte = "ruta reporte"
oRpt.Load(reporte)
oRpt.SetDataSource(rs)
'le indicamos el reportsource al crviewer del segundo form
'que sera el report que creamos
CrystalReportViewer1.ReportSource = oRpt
End Sub
Saludos!!!