Pregunta: | 268 - GUARDAR IMAGENES EN ACCESS CON CODIGO EN VB |
Autor: | Gerardo |
Estoy haciendo un programa en Visual Basic y necesito guardar imagenes en una base de datos Access. La quiero guardar utilizando codigo, pero no se como. Me pueden ayudar? |
Respuesta: | Diana Velasco |
Hola Busca en internet una libreria que se llama adobinary, o sino mandame un mail y te mando el codigo, con ese modulo ya puedes leer y guardar imagenes en una base de datos, utilizando el control picturebox |
Respuesta: | Jose Jimenez |
Lo puedes hacer con la funcion Appendchunck, pero para hacerlo debes tener abierto el registro de la bd, y tener una imagen cargada en un objeto Image
Public Sub GuardarFotoBD(rCedula$, Imagen As Object) Dim SQL$, ADO As ADODB.Recordset Dim DataFile As Integer, Fl As Long, Chunks As Integer Dim Fragment As Integer, Chunk() As Byte, I As Integer Const ChunkSize As Integer = 16384 Set ADO = New ADODB.Recordset SQL$ = "SELECT * FROM" SQL$ = SQL$ & " Estudiante" SQL$ = SQL$ & " WHERE CedEst = '" & rCedula$ & "'" ADO.Open SQL$, cPagos, adOpenKeyset, adLockPessimistic If Not ADO.EOF Then ADO.Update DataFile = 1 Open Imagen.Tag For Binary Access Read As DataFile 'ABRE LA RUTA DE LA FOTO PARA ACCEO BINARIO Fl = LOF(DataFile) 'Devuelve un tipoLong que indica el tamaño, en bytes, de un archivo abierto mediante la instrucción Open. If Fl = 0 Then Close DataFile: Exit Sub Chunks = Fl \ ChunkSize 'LE AGISNA ALA VARIABLE Chunks, EL VALOR DE LA DIVISION DEL TAMAÑO DEL ARCHIVO ENTRE EL VALOR DE LA CONSTANTE CHUNKSIZE Fragment = Fl Mod ChunkSize 'DIVIDE EL TAMAÑO DEL ARCHIVO, POR LA CONSTANTE ChunkSize Y DEVUELVE EL RESTO A LA VARIABLE Fragment ADO!Foto.AppendChunk Null 'LE AGREGA AL CAMPO FOTO, EL VALOR CHUNK COMO NULO ReDim Chunk(Fragment) 'REDIMENSIONA CHUNK, CON EL VALOR DE LA VARIABLE Fragment Get DataFile, , Chunk() 'Lee datos de un archivo de disco abierto (DATAFILE) y coloca la información en una variable (CHUNK()) ADO!Foto.AppendChunk Chunk() 'LE AGREGA AL CAMPO FOTO, EL VALOR DE CHUNK ReDim Chunk(ChunkSize) 'REDIMENSIONA CHUNK, CON EL VALOR DE LA CONSTANTE ChunkSize For I = 1 To Chunks Get DataFile, , Chunk() 'Lee datos de un archivo de disco abierto (DATAFILE) y coloca la información en una variable o arreglo (CHUNK()) ADO!Foto.AppendChunk Chunk() 'LE VA A SIGNANDO AL COMPO FOTO EL VALOR HEXADECIMAL DE LA FOTO Next I Close DataFile 'CIERRA EL ARCHIVO ABIERTO ADO.Update End If ADO.Close Exit Sub End Sub Y PARA CARGARLA DE LA BD A UN OBJETO IMAGE ES: Public Sub CargarFotoBD(rCedula$, Imagen As Object) Dim SQL$, ADO As ADODB.Recordset Dim DataFile As Integer, Fl As Long, Chunks As Integer Dim Fragment As Integer, Chunk() As Byte, I As Integer, Foto& Const ChunkSize As Integer = 16384 On Error GoTo ErrorCargarFotoBD Set ADO = New ADODB.Recordset SQL$ = "SELECT Foto FROM " SQL$ = SQL$ & " Estudiante" SQL$ = SQL$ & " WHERE CedEst = '" & rCedula$ & "'" ADO.Open SQL$, cPagos, adOpenKeyset, adLockPessimistic If Not ADO.EOF Then If Not IsNull(ADO("Foto")) Then DataFile = 1 Open "pictemp" For Binary Access Write As DataFile Foto& = 0 'es es numero del fields(campo Photo) que contiene la foto Fl = ADO.Fields.Item(Foto).ActualSize 'SE LE ASIGNA A F1, EL VALOR DEL TAMAÑO ACTUAL DE LA FOTO Chunks = Fl \ ChunkSize 'LE AGISNA A LA VARIABLE Chunks, EL VALOR DE LA DIVISION DEL TAMAÑO DEL ARCHIVO ENTRE EL VALOR DE LA CONSTANTE CHUNKSIZE Fragment = Fl Mod ChunkSize 'DIVIDE EL TAMAÑO DEL ARCHIVO, POR LA CONSTANTE ChunkSize Y DEVUELVE EL RESTO A LA VARIABLE Fragment ReDim Chunk(Fragment) 'REDIMENSIONA CHUNK, CON EL VALOR DE LA VARIABLE Fragment Chunk() = ADO!Foto.GetChunk(Fragment) Put DataFile, , Chunk() 'Escribe en un archivo de disco(DataFile) los datos contenidos en una variable o arreglo (Chunk()). For I = 1 To Chunks ReDim Buffer(ChunkSize) 'El argumento buffer señala a un búfer asignado el valor sizeofbuffer que indica el número de caracteres que se pueden escribir en el búfer Chunk() = ADO!Foto.GetChunk(ChunkSize) 'el metodo GetChunk, Devuelve todo el contenido, o una parte, de un objeto Field de datos de gran tamaño o binarios Put DataFile, , Chunk() 'Escribe en un archivo de disco(DataFile) los datos contenidos en una variable o arreglo (Chunk()). Next I Close DataFile 'cierra el archivo DataFile Imagen.Tag = "pictemp" 'carga la foto del valor pictemp Imagen.Picture = LoadPicture("pictemp") End If END IF ADO.Close Exit Sub End Sub |
Respuesta: | Chistian Roberto Plat |
Prueba con el código sisguiente: Coloca un campo en la base de datos y defínelo como ´objeto OLE´ Luego incluye un cuadro de imagen (como puede ser Image1) y en coloca el siguiente código en la sección del control que dice DblClick, o donde más te guste. Espero que te sirva... If Clipboard.GetFormat(vbCFText) Then
|