Imagen de base de datos en reportes de Crystal Reports

09/02/2005 - 06:53 por CasDom | Informe spam
Buenas noches:
Tengo una duda:
Estoy leyendo una DB de Vfp la cuál contiene en una tabla referencia a una
imagen JPG que esta grabada en un directorio de imagenes, esta hecho de esta
manera para que las imagenes se almacenen de manera separada de la base de
datos por la gran cantidad de estas.

Con las tablas de apoyo que cargo en el dataset del form puedo visualizar la
imagen en el form, simplemente concateno la ruta y el nombre de la imagen
que tengo en el registro.

Hasta ahi vamos bien...el problema se me presenta al momento de que quiero
ver en un reporte de CR esto.
He estado buscando la manera de referenciar a una imagen y personalizarla en
tiempo de ejecucion, sin embargo no me ha funcionado hasta el momento.

Lo que he realizado es insertar una imagen y tratar de personalizar su
propiedad desde el vnet.

Si alguien me puede apoyar en esto, gracias.

CasDom

Preguntas similare

Leer las respuestas

#1 _ C l a u d i n h o _
09/02/2005 - 14:54 | Informe spam
Hola casdom

para meter una imagen en un crystal report este debe tener como fuente
de datos un dataset,el campo donde se guarde la imagen en el dataset debe
ser del tipo "base64binary"

aqui un pedazo de codigo donde lo hago y hasta cambio el tamaño de la imagen

'
'PlanoProducto es un string base 64 en mi BD
If Not dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto") Is
System.DBNull.Value Then

'declaro un arreglo de byte

Dim Bytes() As Byte

'redimensiono el arreglo de bytes,

ReDim
Bytes(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")).Length)

'convierto la cadena string a un arreglo de byte,

Bytes System.Convert.FromBase64String(dsRespuesta.Tables(0).Rows(0).Item("PlanoPro
ducto"))

'meto el arreglo de byte en la ultima fila del dataset(la necesito al pie de
pagina) en el campo IMAGEN_BLOB que es de tipo "base64binary"

dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows((dsCot.Tables("VIEW_COTIZACION
_PRODUCTO").Rows.Count) - 1).Item("IMAGEN_BLOB") = Bytes

dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows(0).EndEdit()

'declaro una variable de tipo bitmap para obtener las dimensiones de mi
imagen.

Dim pic As System.Drawing.Bitmap

pic Me.BitmapFromBase64(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")
))

'en las siguientes lineas determino el tamaño ideal y las proporciones

'que debe tener la imagen para que no se salga del reporte, las imagenes

'que inserto no son siempre cuadradas

Dim picW As Integer = 7000

Dim picH As Integer = pic.Height * 7000 / pic.Width

If picH > 9500 Then

picH = 9500

picW = pic.Width * 9500 / pic.Height

End If

' aqui voy a la seccion e identifico mi objeto dentro del reporte (rpt) , y
redimensiono sus tamaños esto en tiempo de ejecucion

CType(CType(rpt.Section7,
CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
CrystalDecisions.CrystalReports.Engine.ReportObject).Width = picW

CType(CType(rpt.Section7,
CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
CrystalDecisions.CrystalReports.Engine.ReportObject).Height = picH

End If

'






"CasDom" escribió en el mensaje
news:
Buenas noches:
Tengo una duda:
Estoy leyendo una DB de Vfp la cuál contiene en una tabla referencia a una
imagen JPG que esta grabada en un directorio de imagenes, esta hecho de


esta
manera para que las imagenes se almacenen de manera separada de la base de
datos por la gran cantidad de estas.

Con las tablas de apoyo que cargo en el dataset del form puedo visualizar


la
imagen en el form, simplemente concateno la ruta y el nombre de la imagen
que tengo en el registro.

Hasta ahi vamos bien...el problema se me presenta al momento de que quiero
ver en un reporte de CR esto.
He estado buscando la manera de referenciar a una imagen y personalizarla


en
tiempo de ejecucion, sin embargo no me ha funcionado hasta el momento.

Lo que he realizado es insertar una imagen y tratar de personalizar su
propiedad desde el vnet.

Si alguien me puede apoyar en esto, gracias.

CasDom


Respuesta Responder a este mensaje
#2 juan
11/02/2005 - 06:43 | Informe spam
Hola Claudinho,
Tengo un Crystal Report conectado a una base de datos del disco duro, pero
yo querría conectarlo a un DataSet, y no sé como se hace...
Si pudieras resolverme la duda (a poder ser con algo de código).
Gracias.


"_ C l a u d i n h o _" wrote:

Hola casdom

para meter una imagen en un crystal report este debe tener como fuente
de datos un dataset,el campo donde se guarde la imagen en el dataset debe
ser del tipo "base64binary"

aqui un pedazo de codigo donde lo hago y hasta cambio el tamaño de la imagen

'
'PlanoProducto es un string base 64 en mi BD
If Not dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto") Is
System.DBNull.Value Then

'declaro un arreglo de byte

Dim Bytes() As Byte

'redimensiono el arreglo de bytes,

ReDim
Bytes(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")).Length)

'convierto la cadena string a un arreglo de byte,

Bytes > System.Convert.FromBase64String(dsRespuesta.Tables(0).Rows(0).Item("PlanoPro
ducto"))

'meto el arreglo de byte en la ultima fila del dataset(la necesito al pie de
pagina) en el campo IMAGEN_BLOB que es de tipo "base64binary"

dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows((dsCot.Tables("VIEW_COTIZACION
_PRODUCTO").Rows.Count) - 1).Item("IMAGEN_BLOB") = Bytes

dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows(0).EndEdit()

'declaro una variable de tipo bitmap para obtener las dimensiones de mi
imagen.

Dim pic As System.Drawing.Bitmap

pic > Me.BitmapFromBase64(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")
))

'en las siguientes lineas determino el tamaño ideal y las proporciones

'que debe tener la imagen para que no se salga del reporte, las imagenes

'que inserto no son siempre cuadradas

Dim picW As Integer = 7000

Dim picH As Integer = pic.Height * 7000 / pic.Width

If picH > 9500 Then

picH = 9500

picW = pic.Width * 9500 / pic.Height

End If

' aqui voy a la seccion e identifico mi objeto dentro del reporte (rpt) , y
redimensiono sus tamaños esto en tiempo de ejecucion

CType(CType(rpt.Section7,
CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
CrystalDecisions.CrystalReports.Engine.ReportObject).Width = picW

CType(CType(rpt.Section7,
CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
CrystalDecisions.CrystalReports.Engine.ReportObject).Height = picH

End If

'






"CasDom" escribió en el mensaje
news:
> Buenas noches:
> Tengo una duda:
> Estoy leyendo una DB de Vfp la cuál contiene en una tabla referencia a una
> imagen JPG que esta grabada en un directorio de imagenes, esta hecho de
esta
> manera para que las imagenes se almacenen de manera separada de la base de
> datos por la gran cantidad de estas.
>
> Con las tablas de apoyo que cargo en el dataset del form puedo visualizar
la
> imagen en el form, simplemente concateno la ruta y el nombre de la imagen
> que tengo en el registro.
>
> Hasta ahi vamos bien...el problema se me presenta al momento de que quiero
> ver en un reporte de CR esto.
> He estado buscando la manera de referenciar a una imagen y personalizarla
en
> tiempo de ejecucion, sin embargo no me ha funcionado hasta el momento.
>
> Lo que he realizado es insertar una imagen y tratar de personalizar su
> propiedad desde el vnet.
>
> Si alguien me puede apoyar en esto, gracias.
>
> CasDom
>
>



Respuesta Responder a este mensaje
#3 _ C l a u d i n h o _
11/02/2005 - 16:44 | Informe spam
HOLA,
Mira , lo que debes hacer es agregar un nuevo elemento dataset ( xsd ) luego es super simple... arrastras desde la conexion del servidor las tablas o vistas que quieras agregar ( a mi me gustan mas las vistas) . Luego en el crystal pones como fuente de datos ADO y aparecen automaticamente los xsd con las tablas o vistas

Cuando levantes el reporte tienes que llenar con datos el dataset y dejarlo como fuente de datos

yo hice un proyecto de webservice que devuelve pdf del reporte, porque las vistas son enormes y la carga de datos en el lado del cliente hace imposible el sistema por internet. aqui va el codigo

'--
<WebMethod()> _

Public Function InformeCotizaciones(ByVal intProyectoId As Integer) As String

Dim dsRespuesta As New DataSet

Dim strSql As String

Dim dsCot As New dsReportes

Dim rpt As New rptReporteCotizacionesMensuales

Try

Dim sqlCn As New SqlClient.SqlConnection

Dim sqlCmm As New SqlClient.SqlCommand

Dim sqlDA As New SqlClient.SqlDataAdapter

strSql = "select * from VIEW_REPORTE_COTIZACION_POR_MEDIDA where Ide_IdProyecto= " & intProyectoId

sqlCn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")

sqlCmm.Connection = sqlCn

sqlCmm.CommandText = strSql

sqlDA.SelectCommand = sqlCmm

sqlDA.Fill(dsRespuesta, "VIEW_REPORTE_COTIZACION_POR_MEDIDA")

dsCot.Merge(dsRespuesta)

sqlDA.Dispose()

sqlCmm.Dispose()

sqlCn.Dispose()

rpt.Database.Tables("VIEW_REPORTE_COTIZACION_POR_MEDIDA").SetDataSource(dsCot)

Dim FileStream As New IO.MemoryStream

FileStream=ExportarReporte(FormatoExportacion.PDF, rpt)

Dim binarydata As System.IO.BinaryReader

Dim bty() As Byte

Dim STRpdf As String

binarydata = New System.IO.BinaryReader(FileStream)

bty = binarydata.ReadBytes(Me.FileStream.Length)

STRpdf = Convert.ToBase64String(bty)

Return STRpdf

Catch ex As Exception

Return " 1 " & ex.Message

Finally

End Try

End Function

'--
























"juan" escribió en el mensaje news:
Hola Claudinho,
Tengo un Crystal Report conectado a una base de datos del disco duro, pero
yo querría conectarlo a un DataSet, y no sé como se hace...
Si pudieras resolverme la duda (a poder ser con algo de código).
Gracias.


"_ C l a u d i n h o _" wrote:

> Hola casdom
>
> para meter una imagen en un crystal report este debe tener como fuente
> de datos un dataset,el campo donde se guarde la imagen en el dataset debe
> ser del tipo "base64binary"
>
> aqui un pedazo de codigo donde lo hago y hasta cambio el tamaño de la imagen
>
> '
> 'PlanoProducto es un string base 64 en mi BD
> If Not dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto") Is
> System.DBNull.Value Then
>
> 'declaro un arreglo de byte
>
> Dim Bytes() As Byte
>
> 'redimensiono el arreglo de bytes,
>
> ReDim
> Bytes(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")).Length)
>
> 'convierto la cadena string a un arreglo de byte,
>
> Bytes > > System.Convert.FromBase64String(dsRespuesta.Tables(0).Rows(0).Item("PlanoPro
> ducto"))
>
> 'meto el arreglo de byte en la ultima fila del dataset(la necesito al pie de
> pagina) en el campo IMAGEN_BLOB que es de tipo "base64binary"
>
> dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows((dsCot.Tables("VIEW_COTIZACION
> _PRODUCTO").Rows.Count) - 1).Item("IMAGEN_BLOB") = Bytes
>
> dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows(0).EndEdit()
>
> 'declaro una variable de tipo bitmap para obtener las dimensiones de mi
> imagen.
>
> Dim pic As System.Drawing.Bitmap
>
> pic > > Me.BitmapFromBase64(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")
> ))
>
> 'en las siguientes lineas determino el tamaño ideal y las proporciones
>
> 'que debe tener la imagen para que no se salga del reporte, las imagenes
>
> 'que inserto no son siempre cuadradas
>
> Dim picW As Integer = 7000
>
> Dim picH As Integer = pic.Height * 7000 / pic.Width
>
> If picH > 9500 Then
>
> picH = 9500
>
> picW = pic.Width * 9500 / pic.Height
>
> End If
>
> ' aqui voy a la seccion e identifico mi objeto dentro del reporte (rpt) , y
> redimensiono sus tamaños esto en tiempo de ejecucion
>
> CType(CType(rpt.Section7,
> CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
> CrystalDecisions.CrystalReports.Engine.ReportObject).Width = picW
>
> CType(CType(rpt.Section7,
> CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
> CrystalDecisions.CrystalReports.Engine.ReportObject).Height = picH
>
> End If
>
> '
>
>
>
>
>
>
> "CasDom" escribió en el mensaje
> news:
> > Buenas noches:
> > Tengo una duda:
> > Estoy leyendo una DB de Vfp la cuál contiene en una tabla referencia a una
> > imagen JPG que esta grabada en un directorio de imagenes, esta hecho de
> esta
> > manera para que las imagenes se almacenen de manera separada de la base de
> > datos por la gran cantidad de estas.
> >
> > Con las tablas de apoyo que cargo en el dataset del form puedo visualizar
> la
> > imagen en el form, simplemente concateno la ruta y el nombre de la imagen
> > que tengo en el registro.
> >
> > Hasta ahi vamos bien...el problema se me presenta al momento de que quiero
> > ver en un reporte de CR esto.
> > He estado buscando la manera de referenciar a una imagen y personalizarla
> en
> > tiempo de ejecucion, sin embargo no me ha funcionado hasta el momento.
> >
> > Lo que he realizado es insertar una imagen y tratar de personalizar su
> > propiedad desde el vnet.
> >
> > Si alguien me puede apoyar en esto, gracias.
> >
> > CasDom
> >
> >
>
>
>
Respuesta Responder a este mensaje
#4 Barbara
16/02/2005 - 09:51 | Informe spam
Me parece muy buena idea:

Puedes explicarnos qué hace tu función ExportarReporte y qué parámetros
acepta (se agradecería código).
Gracias.


"_ C l a u d i n h o _" wrote:

HOLA,
Mira , lo que debes hacer es agregar un nuevo elemento dataset ( xsd ) luego es super simple... arrastras desde la conexion del servidor las tablas o vistas que quieras agregar ( a mi me gustan mas las vistas) . Luego en el crystal pones como fuente de datos ADO y aparecen automaticamente los xsd con las tablas o vistas

Cuando levantes el reporte tienes que llenar con datos el dataset y dejarlo como fuente de datos

yo hice un proyecto de webservice que devuelve pdf del reporte, porque las vistas son enormes y la carga de datos en el lado del cliente hace imposible el sistema por internet. aqui va el codigo

'--
<WebMethod()> _

Public Function InformeCotizaciones(ByVal intProyectoId As Integer) As String

Dim dsRespuesta As New DataSet

Dim strSql As String

Dim dsCot As New dsReportes

Dim rpt As New rptReporteCotizacionesMensuales

Try

Dim sqlCn As New SqlClient.SqlConnection

Dim sqlCmm As New SqlClient.SqlCommand

Dim sqlDA As New SqlClient.SqlDataAdapter

strSql = "select * from VIEW_REPORTE_COTIZACION_POR_MEDIDA where Ide_IdProyecto= " & intProyectoId

sqlCn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")

sqlCmm.Connection = sqlCn

sqlCmm.CommandText = strSql

sqlDA.SelectCommand = sqlCmm

sqlDA.Fill(dsRespuesta, "VIEW_REPORTE_COTIZACION_POR_MEDIDA")

dsCot.Merge(dsRespuesta)

sqlDA.Dispose()

sqlCmm.Dispose()

sqlCn.Dispose()

rpt.Database.Tables("VIEW_REPORTE_COTIZACION_POR_MEDIDA").SetDataSource(dsCot)

Dim FileStream As New IO.MemoryStream

FileStream=ExportarReporte(FormatoExportacion.PDF, rpt)

Dim binarydata As System.IO.BinaryReader

Dim bty() As Byte

Dim STRpdf As String

binarydata = New System.IO.BinaryReader(FileStream)

bty = binarydata.ReadBytes(Me.FileStream.Length)

STRpdf = Convert.ToBase64String(bty)

Return STRpdf

Catch ex As Exception

Return " 1 " & ex.Message

Finally

End Try

End Function

'--
























"juan" escribió en el mensaje news:
> Hola Claudinho,
> Tengo un Crystal Report conectado a una base de datos del disco duro, pero
> yo querría conectarlo a un DataSet, y no sé como se hace...
> Si pudieras resolverme la duda (a poder ser con algo de código).
> Gracias.
>
>
> "_ C l a u d i n h o _" wrote:
>
> > Hola casdom
> >
> > para meter una imagen en un crystal report este debe tener como fuente
> > de datos un dataset,el campo donde se guarde la imagen en el dataset debe
> > ser del tipo "base64binary"
> >
> > aqui un pedazo de codigo donde lo hago y hasta cambio el tamaño de la imagen
> >
> > '
> > 'PlanoProducto es un string base 64 en mi BD
> > If Not dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto") Is
> > System.DBNull.Value Then
> >
> > 'declaro un arreglo de byte
> >
> > Dim Bytes() As Byte
> >
> > 'redimensiono el arreglo de bytes,
> >
> > ReDim
> > Bytes(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")).Length)
> >
> > 'convierto la cadena string a un arreglo de byte,
> >
> > Bytes > > > System.Convert.FromBase64String(dsRespuesta.Tables(0).Rows(0).Item("PlanoPro
> > ducto"))
> >
> > 'meto el arreglo de byte en la ultima fila del dataset(la necesito al pie de
> > pagina) en el campo IMAGEN_BLOB que es de tipo "base64binary"
> >
> > dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows((dsCot.Tables("VIEW_COTIZACION
> > _PRODUCTO").Rows.Count) - 1).Item("IMAGEN_BLOB") = Bytes
> >
> > dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows(0).EndEdit()
> >
> > 'declaro una variable de tipo bitmap para obtener las dimensiones de mi
> > imagen.
> >
> > Dim pic As System.Drawing.Bitmap
> >
> > pic > > > Me.BitmapFromBase64(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")
> > ))
> >
> > 'en las siguientes lineas determino el tamaño ideal y las proporciones
> >
> > 'que debe tener la imagen para que no se salga del reporte, las imagenes
> >
> > 'que inserto no son siempre cuadradas
> >
> > Dim picW As Integer = 7000
> >
> > Dim picH As Integer = pic.Height * 7000 / pic.Width
> >
> > If picH > 9500 Then
> >
> > picH = 9500
> >
> > picW = pic.Width * 9500 / pic.Height
> >
> > End If
> >
> > ' aqui voy a la seccion e identifico mi objeto dentro del reporte (rpt) , y
> > redimensiono sus tamaños esto en tiempo de ejecucion
> >
> > CType(CType(rpt.Section7,
> > CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
> > CrystalDecisions.CrystalReports.Engine.ReportObject).Width = picW
> >
> > CType(CType(rpt.Section7,
> > CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
> > CrystalDecisions.CrystalReports.Engine.ReportObject).Height = picH
> >
> > End If
> >
> > '
> >
> >
> >
> >
> >
> >
> > "CasDom" escribió en el mensaje
> > news:
> > > Buenas noches:
> > > Tengo una duda:
> > > Estoy leyendo una DB de Vfp la cuál contiene en una tabla referencia a una
> > > imagen JPG que esta grabada en un directorio de imagenes, esta hecho de
> > esta
> > > manera para que las imagenes se almacenen de manera separada de la base de
> > > datos por la gran cantidad de estas.
> > >
> > > Con las tablas de apoyo que cargo en el dataset del form puedo visualizar
> > la
> > > imagen en el form, simplemente concateno la ruta y el nombre de la imagen
> > > que tengo en el registro.
> > >
> > > Hasta ahi vamos bien...el problema se me presenta al momento de que quiero
> > > ver en un reporte de CR esto.
> > > He estado buscando la manera de referenciar a una imagen y personalizarla
> > en
> > > tiempo de ejecucion, sin embargo no me ha funcionado hasta el momento.
> > >
> > > Lo que he realizado es insertar una imagen y tratar de personalizar su
> > > propiedad desde el vnet.
> > >
> > > Si alguien me puede apoyar en esto, gracias.
> > >
> > > CasDom
> > >
> > >
> >
> >
> >

Respuesta Responder a este mensaje
#5 stobon
25/02/2005 - 15:09 | Informe spam
Claudinho, muchas gracias por la información que proporcionaste, yo tenía el
mismo problema.
La cosa ahora es que realizo todo lo que indicaste pero aún no me aparece la
imagen, no se si hay algún tipo de problema con dlls. Además me podrías
indicar qué versión de Visual Studio .NET estás utilizando.

Gracias



"_ C l a u d i n h o _" wrote:

HOLA,
Mira , lo que debes hacer es agregar un nuevo elemento dataset ( xsd ) luego es super simple... arrastras desde la conexion del servidor las tablas o vistas que quieras agregar ( a mi me gustan mas las vistas) . Luego en el crystal pones como fuente de datos ADO y aparecen automaticamente los xsd con las tablas o vistas

Cuando levantes el reporte tienes que llenar con datos el dataset y dejarlo como fuente de datos

yo hice un proyecto de webservice que devuelve pdf del reporte, porque las vistas son enormes y la carga de datos en el lado del cliente hace imposible el sistema por internet. aqui va el codigo

'--
<WebMethod()> _

Public Function InformeCotizaciones(ByVal intProyectoId As Integer) As String

Dim dsRespuesta As New DataSet

Dim strSql As String

Dim dsCot As New dsReportes

Dim rpt As New rptReporteCotizacionesMensuales

Try

Dim sqlCn As New SqlClient.SqlConnection

Dim sqlCmm As New SqlClient.SqlCommand

Dim sqlDA As New SqlClient.SqlDataAdapter

strSql = "select * from VIEW_REPORTE_COTIZACION_POR_MEDIDA where Ide_IdProyecto= " & intProyectoId

sqlCn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")

sqlCmm.Connection = sqlCn

sqlCmm.CommandText = strSql

sqlDA.SelectCommand = sqlCmm

sqlDA.Fill(dsRespuesta, "VIEW_REPORTE_COTIZACION_POR_MEDIDA")

dsCot.Merge(dsRespuesta)

sqlDA.Dispose()

sqlCmm.Dispose()

sqlCn.Dispose()

rpt.Database.Tables("VIEW_REPORTE_COTIZACION_POR_MEDIDA").SetDataSource(dsCot)

Dim FileStream As New IO.MemoryStream

FileStream=ExportarReporte(FormatoExportacion.PDF, rpt)

Dim binarydata As System.IO.BinaryReader

Dim bty() As Byte

Dim STRpdf As String

binarydata = New System.IO.BinaryReader(FileStream)

bty = binarydata.ReadBytes(Me.FileStream.Length)

STRpdf = Convert.ToBase64String(bty)

Return STRpdf

Catch ex As Exception

Return " 1 " & ex.Message

Finally

End Try

End Function

'--
























"juan" escribió en el mensaje news:
> Hola Claudinho,
> Tengo un Crystal Report conectado a una base de datos del disco duro, pero
> yo querría conectarlo a un DataSet, y no sé como se hace...
> Si pudieras resolverme la duda (a poder ser con algo de código).
> Gracias.
>
>
> "_ C l a u d i n h o _" wrote:
>
> > Hola casdom
> >
> > para meter una imagen en un crystal report este debe tener como fuente
> > de datos un dataset,el campo donde se guarde la imagen en el dataset debe
> > ser del tipo "base64binary"
> >
> > aqui un pedazo de codigo donde lo hago y hasta cambio el tamaño de la imagen
> >
> > '
> > 'PlanoProducto es un string base 64 en mi BD
> > If Not dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto") Is
> > System.DBNull.Value Then
> >
> > 'declaro un arreglo de byte
> >
> > Dim Bytes() As Byte
> >
> > 'redimensiono el arreglo de bytes,
> >
> > ReDim
> > Bytes(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")).Length)
> >
> > 'convierto la cadena string a un arreglo de byte,
> >
> > Bytes > > > System.Convert.FromBase64String(dsRespuesta.Tables(0).Rows(0).Item("PlanoPro
> > ducto"))
> >
> > 'meto el arreglo de byte en la ultima fila del dataset(la necesito al pie de
> > pagina) en el campo IMAGEN_BLOB que es de tipo "base64binary"
> >
> > dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows((dsCot.Tables("VIEW_COTIZACION
> > _PRODUCTO").Rows.Count) - 1).Item("IMAGEN_BLOB") = Bytes
> >
> > dsCot.Tables("VIEW_COTIZACION_PRODUCTO").Rows(0).EndEdit()
> >
> > 'declaro una variable de tipo bitmap para obtener las dimensiones de mi
> > imagen.
> >
> > Dim pic As System.Drawing.Bitmap
> >
> > pic > > > Me.BitmapFromBase64(CStr(dsRespuesta.Tables(0).Rows(0).Item("PlanoProducto")
> > ))
> >
> > 'en las siguientes lineas determino el tamaño ideal y las proporciones
> >
> > 'que debe tener la imagen para que no se salga del reporte, las imagenes
> >
> > 'que inserto no son siempre cuadradas
> >
> > Dim picW As Integer = 7000
> >
> > Dim picH As Integer = pic.Height * 7000 / pic.Width
> >
> > If picH > 9500 Then
> >
> > picH = 9500
> >
> > picW = pic.Width * 9500 / pic.Height
> >
> > End If
> >
> > ' aqui voy a la seccion e identifico mi objeto dentro del reporte (rpt) , y
> > redimensiono sus tamaños esto en tiempo de ejecucion
> >
> > CType(CType(rpt.Section7,
> > CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
> > CrystalDecisions.CrystalReports.Engine.ReportObject).Width = picW
> >
> > CType(CType(rpt.Section7,
> > CrystalDecisions.CrystalReports.Engine.Section).ReportObjects(2),
> > CrystalDecisions.CrystalReports.Engine.ReportObject).Height = picH
> >
> > End If
> >
> > '
> >
> >
> >
> >
> >
> >
> > "CasDom" escribió en el mensaje
> > news:
> > > Buenas noches:
> > > Tengo una duda:
> > > Estoy leyendo una DB de Vfp la cuál contiene en una tabla referencia a una
> > > imagen JPG que esta grabada en un directorio de imagenes, esta hecho de
> > esta
> > > manera para que las imagenes se almacenen de manera separada de la base de
> > > datos por la gran cantidad de estas.
> > >
> > > Con las tablas de apoyo que cargo en el dataset del form puedo visualizar
> > la
> > > imagen en el form, simplemente concateno la ruta y el nombre de la imagen
> > > que tengo en el registro.
> > >
> > > Hasta ahi vamos bien...el problema se me presenta al momento de que quiero
> > > ver en un reporte de CR esto.
> > > He estado buscando la manera de referenciar a una imagen y personalizarla
> > en
> > > tiempo de ejecucion, sin embargo no me ha funcionado hasta el momento.
> > >
> > > Lo que he realizado es insertar una imagen y tratar de personalizar su
> > > propiedad desde el vnet.
> > >
> > > Si alguien me puede apoyar en esto, gracias.
> > >
> > > CasDom
> > >
> > >
> >
> >
> >

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida