Establecer varios valores en "otra tabla" a partir de "Varios Grupos de Opciones" de un formulario.

Tengo un formulario llamado "Evoluciones" con varios Grupos de Opciones que registran la selección en su tabla de origen los valores numéricos según la opción seleccionada.

Con una macro a la cual denominé "Registra Evolucion", que ejecuto con un botón comando desde el formulario mencionado ("Evoluciones") logro establecer una palabra "en otra tabla" según la opción seleccionada en un Grupo de opciones. Esto es algo asi: -Temperatura,  *opción 1 (= Fiebre), opción 2 (=Afebril), establece "Fiebre" en la tabla que le indico si está seleccionada la *opción 1 tras ejecutar la macro condicional llamada "Registra Evolucion"

Ahora bien, cuando ya tengo varios grupos de opciones distintos, Ej -Peso *opción 1 (= Aumento de peso) *opcion 2 (= Pérdida de peso), otro grupo incluye por ej. -Hidratación, *opción 1 (=Hidratado) *opción 2 (=Deshidratación leve) *opción 3 (=Deshidratación moderada) *opción 4 (=Deshidratación grave).

Al seleccionar Fiebre, Pérdida de peso y Deshidratación leve por ejemplo, solo me guarda Deshidratación leve, ignorando las otras dos palabras. ¿?!

Necesito que me guarde en la otra tabla todas las opciones y no logro hacerlo.

¿Cómo debo secuenciar la cadena de eventos condicionados para que me guarde todas las palabras y no solo una? ¿Indicando ir a registro nuevo cada vez? ¿Cómo lo hago? ¿Dónde lo pongo si todo lo secuencio algo así?

Si figura tal valor

Establecer tal "palabra"

O si figura tal otro valor

Establecer tal otra "palabra".

Finalizar Si.

Si figura tal valor establecer tal "palabra"

O si figura tal valor establecer tal otra "palabra".

Finalizar Si.

Si figura tal valor establecer tal "palabra"

O si figura tal valor establecer tal otra "palabra"

O si figura tal valor establecer tal otra "palabra"..

Obviamente no se código, solo algo de macros.

1
Respuesta
2

Tengo una duda con el problema que planteas: ¿Todos los valores los quieres escribir en el mismo cuadro de texto o en diferentes (uno para la fiebre, otro para la deshidratación...)?

Si es el segundo caso, mi consejo sería que usases una macro para cada evento "después de actualizar" de cada grupo de opciones (sería hacer lo mismo que la macro de fiebre que te funciona, pero para cada grupo)

Si es el primer caso, en la acción "Establecer valor", tienes que poner el valor ya existente del cuadro de texto y encadenarle el nuevo, algo así:

[Formularios]![NombreFormulario]![NombreCuadroTexto] & " Nuevo Valor"

Otra forma, también para este primer caso, y usando una sola macro, sería anidar Sis, algo como esto:

Si Fiebre=1

   Si PerdidaPeso=1

      Si Deshitratacion=1

         Establecer valor (Valor fiebre1, valor perdida1, valordeshidratacion1)

      o Si Deshitratacion=2

         Establecer valor (Valor fiebre1, valor perdida1, valordeshidratacion2)

      ...

      Finalizar Si (de deshidratación)

   O Si PerdidaPeso=2

      Si Deshitratacion=1

         Establecer valor (Valor fiebre1, valor perdida1, valordeshidratacion1)

      o Si Deshitratacion=2

         Establecer valor (Valor fiebre1, valor perdida1, valordeshidratacion2)

      ...

      Finalizar Si (de deshidratación)

      ...

   Finalizar Si (de pérdida peso)

O si Fiebre=2

   Si PerdidaPeso=1

      Si Deshitratacion=1

...

Es decir, tienes que construir tu macro para todas las combinaciones posibles.

Un saludo


Si lo quieres hacer por código, sería prácticamente igual:

Select Case Me.Fiebre
   Case 1
      Select Case Me.PerdidaPeso
          Case 1
                Select Case Me.Deshidratacion
                     Case 1
                           Me.CuadroTexto = "valor fiebre1, valor perdida1, valor deshid1"
                    Case 2
                          Me.CuadroTexto = "valor fiebre1, valor perdida1, valor deshid2"
                   Case...
              End Select
        Case 2
                Select Case Me.Deshidratacion
                     Case 1
                           Me.CuadroTexto = "valor fiebre1, valor perdida2, valor deshid1"
                    Case 2
                          Me.CuadroTexto = "valor fiebre1, valor perdida2, valor deshid2"
                   Case...
              End Select
        Case ...
    End Select
Case 2
...
Case 3
...
End Select

¡Gracias! Muchas gracias! Utilice las macros individuales. Intentaba hacerlo todo en una pero no me guardaba en diferentes registros que era lo que pretendía. En el mismo cuadro de texto pero en diferentes registros. También me va a servir concatenarlo. Muchas gracias!

Hola.

No me funciona.

En principio guardaba los datos en diferentes registros sucecivos, pero ahora, a pesar de actualizar en cada macro y ejecutarlas en conjunto todas las macros como en un principio cuando funcionaba establecen el valor en el mismo registro, en la misma celda!!!. Solo queda guardado lo que establece la ultima macro de la secuencia!!!?

Que puedo hacer??

Pues si en un principio funcionaba, y con los cambios que has hecho ya no, te has equivocado en algo, pero no te puedo decir en qué sin saber lo que has hecho.

Si quieres pásame un enlace a tu BD, únicamente con los elementos implicados y cuando pueda le hecho un ojo.

Hola.

La secuencia de macros la enliste al hacer clic en un botón comando de la siguiente manera:

Private Sub Comando50_Click()
On Error GoTo Err_Comando50_Click
    Dim stDocName As String
    stDocName = "Actualizar"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones de glucemia SV diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones IMC SV diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones FC SV diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones Oximetria en SV Diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones TA en SV diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones Temperatura SV diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones de FR en SV Diario"
    DoCmd.RunMacro stDocName
    stDocName = "Alteraciones Ritmo Cardv SV diario"
    DoCmd.RunMacro stDocName
    stDocName = "Probl YA enlist Si en SV Diario"
    DoCmd.RunMacro stDocName
    stDocName = "EvolConsciencia"
    DoCmd.RunMacro stDocName
    stDocName = "EvolEstGralPcte"
    DoCmd.RunMacro stDocName
    stDocName = "EvolHidratacion"
    DoCmd.RunMacro stDocName
    stDocName = "EvolTemperatura"
    DoCmd.RunMacro stDocName
    stDocName = "EvolSVEstables"
    DoCmd.RunMacro stDocName
    stDocName = "EvolAbdBlandoYDepres"
    DoCmd.RunMacro stDocName
    stDocName = "EvolDolorAbdominal"
    DoCmd.RunMacro stDocName
    stDocName = "EvolRuidosHidroaereos"
    DoCmd.RunMacro stDocName
    stDocName = "EvolBEBA"
    DoCmd.RunMacro stDocName
    stDocName = "EvolMurmulloVesic"
    DoCmd.RunMacro stDocName
    stDocName = "EvolRuidosRespAgregados"
    DoCmd.RunMacro stDocName
    stDocName = "EvolEupneicoDisneico"
    DoCmd.RunMacro stDocName
    stDocName = "EvolHemodinamia"
    DoCmd.RunMacro stDocName
    stDocName = "EvolPerfusion Periferica"
    DoCmd.RunMacro stDocName
    stDocName = "EvolFalloBomba"
    DoCmd.RunMacro stDocName
    stDocName = "EvolEdemas Perifericos"
    DoCmd.RunMacro stDocName
    stDocName = "EvolCambiosExFisico"
    DoCmd.RunMacro stDocName
    stDocName = "EvolCambiosIndMedicas"
    DoCmd.RunMacro stDocName
    stDocName = "EvolInterrecurrencias"
    DoCmd.RunMacro stDocName
    stDocName = "EvolPautasAlarma"
    DoCmd.RunMacro stDocName
    stDocName = "EvolCatarsis"
    DoCmd.RunMacro stDocName
    stDocName = "Evol R1 R2 Focos"
    DoCmd.RunMacro stDocName
    stDocName = "Actualizar"
    DoCmd.RunMacro stDocName
    stDocName = "Detener Macro"
    DoCmd.RunMacro stDocName
    
    
Exit_Comando50_Click:
    Exit Sub
Err_Comando50_Click:
    MsgBox Err.Description
    Resume Exit_Comando50_Click
    
End Sub
------------------------------------

Y cada macro tiene la siguiente estructura aproximadamente:

Estableciendo el valor

[Formularios]![Signos Vitales diario]![Subfrm Lsta probl SV].[Formulario]![MCPaciente]

Se trata de un subformulario alojado dentro del formulario Signos Vitales diario.

Si bien probé indicándole ir a un registro nuevo para que guarde todas las opciones seleccionadas con cada macro no sirvió de nada. En el mejor de los casos me dice que el subformulario no está abierto.

Como te mencioné, me establece todo en el campo indicado [MCPaciente]

porque veo como lo escribe y lo remplaza con la siguiente macro que se ejecuta en el campo mencionado.

Si bien volví sobre mis pasos a una versión anterior donde funcionaba y no hice cambios en las instrucciones originales. Solo agregué opciones pero siempre con la misma estructura.

Se había solucionado al colocarle a cada macro después de Finalizar Si

EjecutarComandoMenú Actualizar

Pero ahora no funcionó más!!?

Tal vez estructurándolo totalmente diferente como una consulta de actualización en segundo plano o algo así pueda hacerse, pero nose como.

No quiero que sea errático obviamente como parece ser esta forma.

Muchas gracias desde ya!!!

Si en cada macro le dices que te escriba un valor en el cuadro MCPaciente, es lógico que te quede solo el valor de la última macro...

Como te decía en mi primera respuesta, tienes que encadenar lso nuevos valores al ya existente:

Si es el primer caso, en la acción "Establecer valor", tienes que poner el valor ya existente del cuadro de texto y encadenarle el nuevo, algo así:

[Formularios]![NombreFormulario]![NombreCuadroTexto] & " Nuevo Valor"

En tu caso sería, en cada macro:

[Formularios]![Signos Vitales diario]![Subfrm Lsta probl SV].[Formulario]![MCPaciente] & " valor nuevo "

Esto me dejaría encadenado en el mismo campo MCpaciente :

deshidratado fiebre dolor abdominal etc.

-Cuando necesito que cada una quede:

Deshidratado

Fiebre

Dolor abdominal

Etc.

-Como te decía lo necesito en diferentes registros del subformulario indicado

Gracias saludos.

Te he preparado un ejemplo con solo dos marcos de opciones y dos opciones distintas en dos botones, a ver si consigues adaptar alguna a lo que tu tienes.

He optado por prescindir de las macros y hacerlo todo directamente por código.

http://filebig.net/files/JbFfnrUkc2 

Genio!

Muchísimas gracias! Creo que ahora si!

Tengo que ponerme a escribir pero me la hiciste simple.

Pude con la segunda opción. Gracias también por las alternativas. Me salvaste otra vez.

Bendiciones para vos y tu familia!

Hola. Pude hacerlo como me sugeriste.

Me quedó solamente una parte sin resolver. Esta otra parte no se basa en grupo de opciones como lo anterior, sino en cuadros de texto que segun la palabra que contengan establecen un valor en la misma tabla que lo hacia con el grupo de opciones. Esto lo tenia con una macro condicional. Si contiene el cuadro de texto X valor que establezca XX palabra, o si tiene tal otro valor que establezca tal otra palabra y asi...

Todo lo tengo en el mismo formulario. Y utilizo la misma tabla y campo que te mencione anteriormente para guardar los valores. (MCPaciente).

Será posible con agregar esta funcionalidad a lo que ya me habias enviado?

Muchas gracias!!

Sí, claro, has de hacerlo igual, pero haciendo referencia al cuadro de texto en vez de al marco de opciones

Excelente!! Muchas gracias.

Con valores precisos anda genial!!

Y como pongo cuando debe evaluar entre 2 valores Ej

Puse asi: Case Is  Between 37 And 37.99"

                  valor = "Febrícula"

Pero me da error!!? Como tendría que hacer??

Deberías acostumbrarte a consultar la ayuda de Access y de sus funciones, pues dudas como esta las resolverías mucho más rápido que preguntando por aquí...

Por ejemplo, si consultas la ayuda (https://msdn.microsoft.com/es-es/library/cy37t14y(v=vs.120).aspx ) verás que la sintaxis correcta es:

Case 37 To 37.99

Nuevamente muchas gracias. Me resultó muy bien.

No acudo a la ayuda porque habitualmente me cuesta mucho encontrar la respuesta adecuada. Aún cuando me derivaste al sector adecuado de la ayuda, nunca hubiese llegado por mis propios medios. Además no me resulta simple entenderlo. Muy técnico para mi. 

De todos modos voy a seguir tu consejo y buscar respuestas en esas páginas.

Agradecido nuevamente...!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas