Visual Basic - insertar imagen con visual 6.0

Life is soft - evento anual de software empresarial
   
Vista:

insertar imagen con visual 6.0

Publicado por JUAN MARCELO (3 intervenciones) el 22/03/2008 05:55:14
Estoy haciendo un programa en visual 6.0, utilizo como base de datos a mysql. Tengo un problema y necesito ayuda!!!. No puedo insertar fotos a un campo blob a través de un picturebox, es decir a la imagen que coloco en el picture no la puedo enviar a la base de datos. Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:insertar imagen con visual 6.0

Publicado por jose (10 intervenciones) el 22/03/2008 08:43:50
Prueba este codigo



Option Explicit

Dim DataFile As Integer
Dim Chunk() As Byte
Const conChunkSize As Integer = 16384

Public Sub LeerBinary(campoBinary As Field, unPicture As PictureBox)
'Leer la imagen del campo de la base y asignarlo al Picture
Dim lngCompensación As Long
Dim lngTamañoTotal As Long

'Se usa un fichero temporal para guardar la imagen
DataFile = FreeFile
Open "pictemp" For Binary Access Write As DataFile

lngTamañoTotal = campoBinary.FieldSize
Do While lngCompensación < lngTamañoTotal
Chunk() = campoBinary.GetChunk(lngCompensación, conChunkSize)
Put DataFile, , Chunk()
lngCompensación = lngCompensación + conChunkSize
Loop

Close DataFile
'Ahora se carga esa imagen en el control
unPicture.Picture = LoadPicture("pictemp")

'Ya no necesitamos el fichero, así que borrarlo
On Local Error Resume Next
If Len(Dir$("pictemp")) Then
Kill "pictemp"
End If
Err = 0
End Sub

Public Sub GuardarBinary(campoBinary As Field, unPicture As PictureBox)
'Guardar el contenido del Picture en el campo de la base
Dim i As Integer
Dim Fragment As Integer, Fl As Long, Chunks As Integer

'
'NOTA:
' El recordset debe estar preparado para Editar o Añadir
'

'Guardar el contenido del picture en un fichero temporal
SavePicture unPicture.Picture, "pictemp"

'Leer el fichero y guardarlo en el campo
DataFile = FreeFile
Open "pictemp" For Binary Access Read As DataFile
Fl = LOF(DataFile) ' Longitud de los datos en el archivo
If Fl = 0 Then Close DataFile: Exit Sub

Chunks = Fl conChunkSize
Fragment = Fl Mod conChunkSize
ReDim Chunk(Fragment)

Get DataFile, , Chunk()
campoBinary.AppendChunk Chunk()
ReDim Chunk(conChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
campoBinary.AppendChunk Chunk()
Next i
Close DataFile

'Ya no necesitamos el fichero, así que borrarlo
On Local Error Resume Next
If Len(Dir$("pictemp")) Then
Kill "pictemp"
End If
Err = 0
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar imagen con visual 6.0

Publicado por JUAN MARCELO (3 intervenciones) el 22/03/2008 18:57:04
GRACIAS JOSE POR RESPONDER!!!
Que significa? ' El recordset debe estar preparado para Editar o Añadir '
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar imagen con visual 6.0

Publicado por jose (10 intervenciones) el 22/03/2008 19:33:30
Existen tres tipos de Recordset: Table, Dynaset y Snapsoht.

Dicho tipo se establecen mediante la propiedad RecordsetType del control data, que predeterminadamente tiene el valor Dynaset.

Un Recordset tipo Dynaset es un conjunto dinámico de registros que representan una determinada tabla o el resultado de una consulta, según se haya establecido la propiedad RecordSource del control data. Puedes agregar nuevos registros, modificar los campos existentes e incluso eliminar registros y todos estos cambios se reflejan en la base de datos afectada.

Un Recordset de tipo Table representa una determinada tabla de base de datos.

Al crear un Recordset de este tipo estarás representando dicha tabla, cargándose en memoria un solo registro que se corresponde con el registro actual. Toda modificación que se realice se verá reflejada en la tabla.

Finalmente el tipo Snapshot crea una copia estática del conjunto de datos al que se accede mediante el control data. En este caso no puedes actualizar la base de datos, sólo puedes visualizar los datos obtenidos.

Espero te sirva de ayuda mis indicaciones

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar imagen con visual 6.0

Publicado por JUAN MARCELO (3 intervenciones) el 22/03/2008 22:13:02
Gracias de nuevo José. Mirá me tira este error ( no se encontró el método o miembro de datos ), en esta línea:

lngTamañoTotal = campoBinary.FieldSize (el error me lo marca en "FieldSize")
Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar imagen con visual 6.0

Publicado por Ivan (1041 intervenciones) el 24/03/2008 18:36:33
Mejor revisa este enlace:
http://www.mysql-hispano.org/page.php?id=20
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar