
Actualizar objeto desde otro formulario
Publicado por Solmar Diotozou (5 intervenciones) el 28/02/2015 16:11:21
Buenos días:
Esta es mi primera participación en el foro. Espero que con el tiempo pueda aportar y no sólo consultar. Se trata de lo siguiente.
Estoy creando una aplicación en Access para un consultorio dental. Cree el formulario FICHAS en donde utilicé este código para que cargue automáticamente las fotos de los pacientes
Las imágenes están en la carpeta "pacientes" que se encuentra en la carpeta PROYECTO donde esta también el MDB que estoy utilizando.
El resto de campos del formulario están vinculados a campos específicos de la tabla PACIENTES. Por supuesto, el formulario tiene como Origen del registro la tabla PACIENTES y, como mencioné, cada campo esta configurado para que el Origen del control corresponda al campo correspondiente de la tabla en cuestión.
Cree un botón para que cargue otro formulario llamado FICHAS EDICIÓN donde puedo modificar los datos del registro del paciente. Ahí aparece la foto del paciente (es el mismo código) y un botón FOTO que carga el explorador de windows para ubicar la nueva foto y "capturar" sólo el nombre de la misma y guardarlo en el campo correspondiente. Utilizo este código para dicho botón (tomado de Microsoft):
Donde Texto204 es un simple cuadro de texto sin etiqueta y oculto, que a su vez esta vinculado al campo correspondiente de la Tabla. Una vez que he seleccionado la nueva foto, automáticamente cambia en el formulario FICHAS EDITAR.
Lo curioso es que al cerrar el formulario FICHAS EDITAR con un simple botón y el código DoCmd.Close, no se actualiza la imagen asociada al paciente, pero si yo cambio algún otro dato (nombre, dirección, profesión, etc.) si cambian y se actualizan automáticamente en FICHAS al cerrar FICHAS EDITAR.
Ahora bien, si me muevo un registro en cualquier dirección (avanzar o retroceder) en FICHAS y regreso al registro que estuve editando, ahí recién cambia la imagen.
También pasa esto con un cuadro de texto que muestra la edad del paciente. Esto lo consigo con este código:
y es el mismo código que incluyo en los botones avanzar, retroceder, ir al primer registro e ir al último registro, para que cuando navegue se muestre la información correcta.
Si cambio la fecha de nacimiento en FICHAS EDITAR, he logrado actualizar la edad en el mismo formulario, pero al cerrarlo, el formulario FICHAS no muestra la actualización de manera automática.
Espero haberme explicado bien. Estoy haciendo mis pininos en esto de la programación en Access con Visual Basic y espero puedan darme alguna orientación.
Un saludo desde Lima, Perú
Bendiciones
Esta es mi primera participación en el foro. Espero que con el tiempo pueda aportar y no sólo consultar. Se trata de lo siguiente.
Estoy creando una aplicación en Access para un consultorio dental. Cree el formulario FICHAS en donde utilicé este código para que cargue automáticamente las fotos de los pacientes
1
2
3
4
5
Private Sub Form_Current() '***** MUESTRA LA IMAGEN ASOCIADA AL REGISTRO
If IsNull([foto]) = False Then
FotoPaciente.Picture = Application.CurrentProject.Path + "\pacientes\" + foto
End If
End Sub
Las imágenes están en la carpeta "pacientes" que se encuentra en la carpeta PROYECTO donde esta también el MDB que estoy utilizando.
El resto de campos del formulario están vinculados a campos específicos de la tabla PACIENTES. Por supuesto, el formulario tiene como Origen del registro la tabla PACIENTES y, como mencioné, cada campo esta configurado para que el Origen del control corresponda al campo correspondiente de la tabla en cuestión.
Cree un botón para que cargue otro formulario llamado FICHAS EDICIÓN donde puedo modificar los datos del registro del paciente. Ahí aparece la foto del paciente (es el mismo código) y un botón FOTO que carga el explorador de windows para ubicar la nueva foto y "capturar" sólo el nombre de la misma y guardarlo en el campo correspondiente. Utilizo este código para dicho botón (tomado de Microsoft):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Sub Comando22_Click()
' This requires a reference to the Microsoft Office 11.0 Object Library.
Dim fDialog As Office.FileDialog
Dim varFile As Variant
' Clear the list box contents.
'Me.FileList.RowSource = ""
' Set up the File dialog box.
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
' Allow the user to make multiple selections in the dialog box.
.AllowMultiSelect = True
' Set the title of the dialog box.
.Title = "Select One or More Files"
' Clear out the current filters, and then add your own.
.Filters.Clear
.Filters.Add "Access Databases", "*.MDB"
.Filters.Add "Access Projects", "*.ADP"
.Filters.Add "All Files", "*.*"
' Show the dialog box. If the .Show method returns True, the
' user picked at least one file. If the .Show method returns
' False, the user clicked Cancel.
If .Show = True Then
' Loop through each file that is selected and then add it to the list box.
For Each varFile In .SelectedItems
Texto204.Value = Dir(varFile)
FotoPaciente.Picture = Application.CurrentProject.Path + "\pacientes\" + Texto204
Forms("Fichas").Requery
Next
Else
MsgBox "Operación cancelada por el usuario"
End If
End With
End Sub
Donde Texto204 es un simple cuadro de texto sin etiqueta y oculto, que a su vez esta vinculado al campo correspondiente de la Tabla. Una vez que he seleccionado la nueva foto, automáticamente cambia en el formulario FICHAS EDITAR.
Lo curioso es que al cerrar el formulario FICHAS EDITAR con un simple botón y el código DoCmd.Close, no se actualiza la imagen asociada al paciente, pero si yo cambio algún otro dato (nombre, dirección, profesión, etc.) si cambian y se actualizan automáticamente en FICHAS al cerrar FICHAS EDITAR.
Ahora bien, si me muevo un registro en cualquier dirección (avanzar o retroceder) en FICHAS y regreso al registro que estuve editando, ahí recién cambia la imagen.
También pasa esto con un cuadro de texto que muestra la edad del paciente. Esto lo consigo con este código:
1
2
3
4
5
Private Sub Form_Load() '***** AL CARGAR EL FORMULARIO
...
Texto64.Value = Year(Now) - Year(Texto47.Value) 'edad del paciente
...
End Sub
y es el mismo código que incluyo en los botones avanzar, retroceder, ir al primer registro e ir al último registro, para que cuando navegue se muestre la información correcta.
Si cambio la fecha de nacimiento en FICHAS EDITAR, he logrado actualizar la edad en el mismo formulario, pero al cerrarlo, el formulario FICHAS no muestra la actualización de manera automática.
Espero haberme explicado bien. Estoy haciendo mis pininos en esto de la programación en Access con Visual Basic y espero puedan darme alguna orientación.
Un saludo desde Lima, Perú
Bendiciones
Valora esta pregunta


0