La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1277 - LLAMAR UNA IMAGEN DE UNA BASE DE DATOSA AL CRYSTAL REPORT
Autor:  Sergio De la Cruz Castillo
Como puedo enlazar una sola imagen de una base de datos ya sea en formato jpg o bmp a un reporte en crystal reports?

  Respuesta:  Eduardo Cañedo
Acabo de trabajar con esto, aver si te sirve:

Public Sub Guarda_Img(Ruta As String, tabla As ADODB.Recordset, campo As String)
Dim lngOS As Long
Dim lngIS As Long
Dim ChBuf() As Byte
Const ConChSz = 100

Set fileSys = CreateObject("Scripting.FileSystemObject")
Set fileName = fileSys.GetFile(Ruta)
lngIS = fileName.Size
Set fileName = Nothing
Set fileSys = Nothing
Open Ruta For Binary Access Read As #1
ReDim ChBuf(ConChSz)
Do While lngOS < lngIS
Get #1, , ChBuf()
tabla(campo).AppendChunk ChBuf()
lngOS = lngOS + ConChSz
Loop
Close #1
End Sub

Este procedimiento lo que hace es meter el archivo de cualquier formato especificado en el parametro ruta(ruta y nombre de archivo con todo y extensión) a la al recordset de ADO que le indiques en el parametro tabla en el campo que mandes al parametro con el mismo nombre, el cual debe ser de tipo OLE. Una vez en la base de datos lo puedes llamar desde el crystal como un campo cualquiera el cual por supuesto puede ser variable dependiando de tus necesidades y diseño del reporte.

Notas:Los archivos de tipo jpg y gif guardados con este procedimento no son reconocidos por los editores de imagenes, ni por el crystal, solo por los browsers(pueden ser usados en paginas asp) el cristal solo reconoce los bmp´s.
Para que funcione el FileSystemObject debes tener el archivo scrrun.dll, creo que esta en c:\windows\system\ y tambien creo que es instalado con el ServisPack 3.
Si quieres sacar el archivo guardado el procedimiento es el inverso, es decir en el Open debes de usar el Write y en lugar del Get se usa el Put.