Concatenación de dos códigos con sendas 'if'.

Agradecería cualquier ayudita sobre esto:

En el evento 'Al hacer clic' de determinado cuadro combinado de un formulario, INDEPENDIENTEMENTE, me funcionan adecuadamente las DOS siguientes líneas de código:

1) If (Eval("[Forms]![F_ENTRADA_DATOS_SIMPLIFICADA]![Sector] Is Null or [Forms]![F_ENTRADA_DATOS_SIMPLIFICADA]![Fila] Is Null or [Forms]![F_ENTRADA_DATOS_SIMPLIFICADA]![Fosa_Nicho] Is Null")) Then
MsgBox "Antes de informar el campo Tipo de Servicio, debe informar los de Sector, Fila y Fosa", vbInformation, "Gestión de Cementerios."

2) Dim Strqry As String

Strqry = "SELECT * FROM datos WHERE sector = '" & Me.sector & "' AND fila = '" & Me.fila & "' AND fosa_nicho = '" & Me.fosa_nicho & "' ORDER BY fecha_servicio DESC"
Set rs = CurrentDb.OpenRecordset(Strqry, dbOpenDynaset)
If Not rs.EOF Then
Me.propietario_actual = rs![propietario_actual]
Me.fecha_pro_actual = rs![fecha_pro_actual]

Else

Me.propietario_actual = "No existe propietario para esta sepultura. Introduzca nuevos datos en este campo."
End If

Rs. Close

El tema está en que no acierto a concatenar ambos códigos, en definitiva que si se cumple la primera condición la aplicación me mande el mensaje previsto en las líneas del primer código -lo que en principio no representa especial problema-, pero que si se da la segunda, tras recorrer los datos de la BD, ejecute lo que en ella he previsto.

Insisto en que si, INDEPENDIENTEMENTE, asocio SUCESIVAMENTE ambas líneas de código al evento 'Al hacer clic' de un cuadro combinado o 'Al recibir el enfoque' de un cuadro de texto, ambas se comportran como quiero se comporten.

1 respuesta

Respuesta
1

Si entendí bien, el código "fusionado" sería este:

 If (Eval("[Forms]![F_ENTRADA_DATOS_SIMPLIFICADA]![Sector] Is Null or [Forms]![F_ENTRADA_DATOS_SIMPLIFICADA]![Fila] Is Null or [Forms]![F_ENTRADA_DATOS_SIMPLIFICADA]![Fosa_Nicho] Is Null")) Then
MsgBox "Antes de informar el campo Tipo de Servicio, debe informar los de Sector, Fila y Fosa", vbInformation, "Gestión de Cementerios."

Else

Dim Strqry As String

Strqry = "SELECT * FROM datos WHERE sector = '" & Me.sector & "' AND fila = '" & Me.fila & "' AND fosa_nicho = '" & Me.fosa_nicho & "' ORDER BY fecha_servicio DESC"
Set rs = CurrentDb.OpenRecordset(Strqry, dbOpenDynaset)
If Not rs.EOF Then
Me.propietario_actual = rs![propietario_actual]
Me.fecha_pro_actual = rs![fecha_pro_actual]

Else

Me.propietario_actual = "No existe propietario para esta sepultura. Introduzca nuevos datos en este campo."
End If

Rs. Close

End If

Si no es así, explícame un poco más lo que pretendes, porque me liaste con lo de las dos condiciones...

Svein, gracias por contestar!

Mira:

Aunque sea obvio -y mucho me temo que un puntito macabro... - la aplicación de que hablo en esta entrada es una que trata la Gestión de Cementerios Municipales...

Bien.

En mi pregunta involucro básicamente un Formulario de Entrada de Datos de Servicios Funerarios: Inhumaciones, Exhumaciones... EN UNA DETERMINADA Y ESPECÍFICA SEPULTURA, CON UN ESPECÍFICO PROPIETARIO...

Bien.

El código fusionado que pretendo construir-obviamente el término que lo define es éste y no el que erróneamente definí como 'concatenado'...-  es:

1) Por una parte que al hacer clic en un cuadro combinado o recibir el enfoque en cualquier cuadro combinado o de texto del formulario QUE NO SEAN LOS QUE DEFINEN LA UBICACIÓN DE LA SEPULTURA: SECTOR, FILA Y FOSA...-, por ej.: nombre del difunto a inhumar... DNI del mismo... propietario de la sepultura... DNI de éste... fecha de adquisición de la sepultura... etc etc. etc. la aplicación 'cante' con el mensaje del primer if: "Antes de informar este campo debe informar los de ubicación/definición de la sepultura... bla bla bla...".

2) Que si los datos de ubicación de la sepultura -ya he dicho que SECTOR, FILA Y FOSA- ya han sido informados en el Formulario de Entrada de Datos de Servicios Funerarios, el segundo código recorra la BD , que vea si la sepultura que ya ha sido definida en el Formulario tiene en la BD un propietario anteriormente definido, en cuyo caso debe traerse al registro actual el nombre de éste y la fecha de adquisición de ella, o, en caso contrario -es decir que para sepultura definida en el Formulario en que estamos no consta en la BD propietario alguno- escriba en el campo correspondiente -lógicamente el destinado a recoger el nombre del potencial propietario- la leyenda "No existe propietario... bla bla bla...", por cierto es éste último Else en el que casca tu código fusionado... No sé si esto último puede ser una pista...  : - )

Pues si los dos códigos funcionan correctamente de forma independiente, el código fusionado que te sugerí es correcto, a al menos, soy incapaz de encontrarle nada raro.

Dices que el error te lo marca en el segundo Else, que entiendo es el que ya tenías y por sí solo funcionaba. Preguntas: ¿Qué error te da? ¿Si le das a depurar, que linea te marca?

Perdón, perdón Svein... que creo que vas a tener razón...

Tengo que probar, pero yo diría que: MAGNÍFICO!!!  : - )

Qué pena que me tenga que marchar ahora y no pueda verificar 100 x 100 el tema...

Je je, pues ya me confirmarás...

Svein, CONFIRMADO. Anoche comprobé que tu código fusionado funciona perfectísimamente, eso sí me llevé un pequeño susto (jejeje) cuando reproduje la situación a fin de que actuase el segundo Else de tu código fusionado, y plaf!: "Se ha producido el error '-2147352567 (80020009' en tiempo de ejecución: El campo es demasiado pequeño para aceptar la cantidad de datos que pretende agregar blablabla" y luego el depurador se paraba en la línea -sombreándola en amarillo-: 'Me.propietario_actual = "No existe propietario para esta sepultura. Introduzca nuevos datos en este campo.", esta mañana se me ha encendido la bombilla, he reducido el mensaje, y, BINGO!

Mil gracias, Svein, que Dios te lo pague  ; - )  , por cierto he leído por ahí que escribes desde Galicia -yo lo hago desde La Mancha manchega... - adoro Galicia, allí debuté en mi oficio allá por 1976... puffff!!! Cedeira, A Cruña, ... donde se pueden tomar los mejores percebes del mundo mundial...  ; - ) REPITO DE NUEVO: MIL GRACIAS.

Sólo por plantearlo, tienes otra alternativa: en vez de reducir el mensaje, aumenta el tamaño del campo en el diseño de la tabla (por lo menos a 100).

No hay de qué.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas