Access - Actualizar objeto desde otro formulario

 
Vista:
sin imagen de perfil

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


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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Actualizar objeto desde otro formulario

Publicado por Solmar (5 intervenciones) el 28/02/2015 16:42:40
Me olvidé de mencionar algo. Probé, también, el cerrar FICHAS al momento de abrir FICHAS EDITAR, realizar la edición deseada, y al hacer clic en el botón de cerrar en FICHAS EDITAR, abrir primero FICHAS y posesionarme en el registro correspondiente, y luego, recién, cerrar FICHAS de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Comando21_Click()   '***** BOTÓN PARA SALIR DEL FORMULARIO
On Error GoTo Err_Comando21_Click
 
    stDocName = "Fichas"
    DoCmd.OpenForm stDocName, acNormal
    DoCmd.GoToRecord , "Fichas", acGoTo, codigopaciente
    DoCmd.Close acForm, "Fichas Editar"
 
Exit_Comando21_Click:
    Exit Sub
 
Err_Comando21_Click:
    MsgBox Err.Description
    Resume Exit_Comando21_Click
 
End Sub

Pero no resultó, pues tanto la edad del paciente como la imagen asociada permanece intacta HASTA que avance o retroceda entre los registros y vuelva nuevamente al registro en cuestión.

Gracias.
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