Deseo hacer un formulario donde el usuario llene los datos de un producto y solamente de click al PictureBox y carge la imagen. Yo busque en sus FAQ como hacer lo de las imagenes. Al correr su codigo fuente sirve perfectamente, pero al adaptarlo a mi programa aparece que la variable mystream no aparece declarada... aqui esta el codigo fuente que adapte de su programa al mio
Código:
El metodo de conexion es el mismo, Environment bajo Jet 4.0. Ayudenme por favor!Dim conn As New ADODB.Connection ' declaramos la conexion
Dim Rs As New ADODB.Recordset 'declaramos el recordset
Dim mystream As New ADODB.Stream ' declaramos el stream para leer las fotos
Dim Direc As String ' declaramos la variable donde guardaremos nuestra foto
Private Sub FotoDB_Click()
'Buscamos la imagen con el diálogo
Dialogo.Filter = "Archivos JPG|*.jpg|Archivos GIF|*.gif|Archivos BMP|*.bmp" ' le decimos al dialogo ---
' que filtre los arhivos jpg, gif, bmp
Dialogo.ShowOpen ' que abra el cuadro de dialogo
If Dialogo.FileName = "" Then ' si es ho eligio imagen que no se salga del proceso
MsgBox "Debe elegir una imagen para que poder agregar el registro", vbInformation, "Error"
Exit Sub
End If
Rs.AddNew
mystream.Open
mystream.LoadFromFile Dialogo.FileName
Rs("imagen") = mystream.Read
Rs.Update
mystream.Close ' Cerrar Stream
MsgBox "Se ha agregado la imagen satisfactoriamente", vbInformation, "Agregada"
If Rs.BOF = False Then
End If
End Sub
Private Sub Form_Load()
conn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\far.mdb" & ";Uid=Admin;Pwd=;" ' Declaramos el driver de access y la ubicacion de la base de datos
' la opion app.path nos da el direccionamiento del nuestro proyecto o programa y solo agregamos el nombre de base de datos en este caso "\dbfotos.mdb" le antepones una diagonal pra hacer la division de directorio o archivo
conn.CursorLocation = adUseClient
conn.Open 'abrimos la conexion
Rs.Open "Select * From producto", conn, adOpenStatic, adLockOptimistic ' abrimos el recordset
Direc = App.Path & "\temp.jpg" ' declaramos cual va a ser nuestro directorio temporal
mystream.Type = adTypeBinary ' le decimos que nuestra imagen es de tipo binario
If Rs.BOF = False Then
Previsualizar
End If
End Sub
End Sub
Private Sub Previsualizar()
On Local Error Resume Next ' por si surge alguno error que lo pase por alto
mystream.Open ' abrimos el stream
mystream.Write Rs!foto ' leemos la imagen
mystream.SaveToFile Direc, adSaveCreateOverWrite ' guardamos la imagen en unestro directorio temporal
mystream.Close ' cerramos el stream
far.Picture = LoadPicture(Direc) ' previsalizamos la imagen en nuestro picture control
End Sub
Ah otra cosa... Como hago para captar la fecha y la hora (en etiquetas de texto separadas) sin necesidad de que el usuario clickee. O sea, que se genere automaticamente, no se necesita guardarla en la BD.
Gracias de antemanos, atentamente
Ma3s_Hugh3s

