Foros del Web » Programación para mayores de 30 ;) » .NET »

imagen con access y Vb2005 - CrystalReport..?

Estas en el tema de imagen con access y Vb2005 - CrystalReport..? en el foro de .NET en Foros del Web. Hola.. Alguien tiene algun programa sencillo donde guarde imagenes y lea dichas imagenes usando base de datos access y visual basic 2005. Por favor, lo ...
  #1 (permalink)  
Antiguo 11/05/2007, 23:19
 
Fecha de Ingreso: abril-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
imagen con access y Vb2005 - CrystalReport..?

Hola..

Alguien tiene algun programa sencillo donde guarde imagenes y lea dichas imagenes usando base de datos access y visual basic 2005. Por favor, lo necesito urgente..

Lo otro aunque es menos urgente. Necesito saber como vincular un crystal report a un dataset de forma manual no por el asistente, ya que todo los ejemplos que encuentro en internet utilizan el asistente y ok es muy facil con esto, pero quedo amarrado a utilizar siempre la ruta que ponga alli para la DB.

Por favor, esto lo he preguntando en varios foros y siempre me quedan sin respuestas los post.. Si pueden ayudarme les estare muy agradecido.
  #2 (permalink)  
Antiguo 12/05/2007, 05:19
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: imagen con access y Vb2005 - CrystalReport..?

Hola,

Guardar y recuperar imágenes:

tengo el código para vb.net 2003, nose si te servirá para 2005 o lo deberás retocar un poco.

Función cargar imagen

Cita:
Function LoadImage1(ByVal imageData As Byte()) As Image
Try
Dim imageStream As New IO.MemoryStream(imageData)
Dim imageObject As Image
imageStream.Flush()
imageObject = Image.FromStream(imageStream)
imageStream.Close()
Return imageObject
Catch ex As Exception
Return Nothing
msgbox("Error al cargar imagen.")
End Try
End Function
Función guardar imagen:

Cita:
Function SaveImage1(ByVal imageObject As Image) As Byte()
Try
Dim imageStream As New IO.MemoryStream
Dim imageData As Byte()
imageObject.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png)
imageStream.Flush()
imageData = imageStream.GetBuffer()
Return imageData
Catch ex As Exception
Return Nothing
msgbox("Error al cargar imagen.")
End Try
End Function
Ejemplo de como utilizar las funciones:

'cargar la imagen en el picture:

Cita:
.
.
.
cmd.CommandText = "select img1 from tabla"
if isdbnull(cmd.executeScalar)=false
Me.pct1.Image = LoadImage1(DirectCast(cmd.executeScalar, Byte()))
end if
.
.
Ejemplo de como guardar la imagen en la bd access:

Cita:
.
.
cmd.commandtext="insert into tabla (img1) values (@img1)
cmd.Parameters.Add("@img1", Me.SaveImage1(Me.pct1.Image))
.
.
.
Espero que te sirva.

saludos
  #3 (permalink)  
Antiguo 12/05/2007, 09:35
 
Fecha de Ingreso: abril-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: imagen con access y Vb2005 - CrystalReport..?

freegirl = Muchas Gracias. Por la informacion. Aunque sea para Vb2003 si funciona porque en todo caso el vb2005 lo convierte. El codigo que me diste no lo he probado, pero cuando tenga un tiempo lo hago. Parece ser facil segun como se ve. Porque habia bajado unos ejemplos y era codigo por todas partes y no entendia nada. Cuando lo pruebe te aviso.

Cuidate mucho..!

ah... lindo nick...!
  #4 (permalink)  
Antiguo 12/05/2007, 21:55
 
Fecha de Ingreso: abril-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: imagen con access y Vb2005 - CrystalReport..?

Hola.. freegirl
Mira anexo el codigo de las funciones y esta todo bien o por lo menos no me marca errores. Pero al anexar por ejemplo:
cmd.commandtext="insert into tabla (img1) values (@img1)
cmd.Parameters.Add("@img1", Me.SaveImage1(Me.pct1.Image))

Me dice que no se declaro cmd y lo declaro como New OleDbCommand porque supongo que es eso por el "cmd" y nada...

Como tendria que declararlo..?

O si podrias pasarme por fa.. el codigo completo para verlo correr.

Muchas, pero muchas Gracias de antemano..!
  #5 (permalink)  
Antiguo 13/05/2007, 09:07
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: imagen con access y Vb2005 - CrystalReport..?

Te pongo un poco más explícito el código, espero que así te ayude.

[Ejemplo]

Cita:
Public Class Form1
Inherits System.Windows.Forms.Form

Dim cmd As OleDb.OleDbCommand
Dim conn As OleDb.OleDbConnection



Function LoadImage1(ByVal imageData As Byte()) As Image
Try
Dim imageStream As New IO.MemoryStream(imageData)
Dim imageObject As Image
imageStream.Flush()
imageObject = Image.FromStream(imageStream)
imageStream.Close()
Return imageObject
Catch ex As Exception
Return Nothing
msgbox("Error al cargar imagen.")
End Try
End Function

Function SaveImage1(ByVal imageObject As Image) As Byte()
Try
Dim imageStream As New IO.MemoryStream
Dim imageData As Byte()
imageObject.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png)
imageStream.Flush()
imageData = imageStream.GetBuffer()
Return imageData
Catch ex As Exception
Return Nothing
msgbox("Error al guardar imagen.", Me.Text)
End Try
End Function


Private Sub btLeerImagen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btLeerImagen.Click

Try
cmd=New oledb.OledbCommand
conn=New Oledb.OledbConnection (tuConexion)

conn.Open()
cmd.Connection = conn
cmd.CommandText = "select img1 from tabla"
if isdbnull(cmd.executeScalar)=false
Me.pct1.Image = LoadImage1(DirectCast(cmd.executeScalar, Byte()))
end if
conn.close
Catch ex As Exception
msgbox( ex.Message)
Finally
conn.close
End Try
End Sub

Private Sub btGuardarImagen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btGuardarImagen.Click

Try
cmd=New oledb.OledbCommand
conn=New Oledb.OledbConnection (tuConexion)

conn.Open()
cmd.Connection = conn
cmd.commandtext="insert into tabla (img1) values (@img1)"
cmd.Parameters.Add("@img1", Me.SaveImage1(Me.pct1.Image))
cmd.ExecuteNonQuery
cmd.parameters.clear
conn.close
Catch ex As Exception
msgbox( ex.Message)
Finally
cmd.parameters.clear
conn.close
End Try

End Sub


End Class
Pruébalo y ya me dirás si ahora te funciona.

Saludos
  #6 (permalink)  
Antiguo 13/05/2007, 16:10
 
Fecha de Ingreso: abril-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: imagen con access y Vb2005 - CrystalReport..?

Hola.. freegirl..

Mira cuando coloco esta linea de esta forma:
cmd.CommandText = "select Imagen from Imagenes Where ID = 8"

Si me muestra la foto de la posicion 8. Ahora si coloco por ejemplo,
una variable o un textbox me dice que "no se han especificado valores para algunos de los parametros requeridos". Es decir, esto;

cmd.CommandText = "select Imagen from Imagenes Where ID = TextBox1.Text"

No lo acepta. Ni con me.textbox1.text
Sera que me falta algo mas..?

Disculpa y Gracias de nuevo..
  #7 (permalink)  
Antiguo 13/05/2007, 16:34
Avatar de jabi  
Fecha de Ingreso: noviembre-2006
Mensajes: 120
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: imagen con access y Vb2005 - CrystalReport..?

Buenas miguelabc123:

Cuando en una consulta quieras referirte a un valor externo a un campo de la base de datos, en este caso un textbox, debes excluírlo de las comillas en el CommandText, y concatenarlo después, así:

Código:
cmd.CommandText = "select Imagen from Imagenes Where ID =" + Convert.ToInt32(TextBox1.Text)
Lo de "Convert.ToInt32" es porque supongo que quieres guardar sólo números enteros, sino sería la conversión correspondiente.

Espero te sirva, un saludo.
__________________
No estoy aquí de vacaciones, creéme.

Última edición por jabi; 13/05/2007 a las 16:40
  #8 (permalink)  
Antiguo 13/05/2007, 18:38
 
Fecha de Ingreso: abril-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: imagen con access y Vb2005 - CrystalReport..?

Hola.. Jabi..

Si me imaginaba que eso tenia que hacer, sacarlo de las comillas, porque si le ponia un numero directo, si hacia la busqueda, pero al colocar la referencia a algun objeto nada, me dicia que faltaba algo. Pero no sabia como hacerlo. Y era tan sencillo como + etc. Mil Gracias..!

Ya paso a paso voy adelantando mi proyectito..! Mil Gracias a ambas (ambos)jaja
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.