Access - Incongruencia de Access y ingnorancia mia

   
Vista:

Incongruencia de Access y ingnorancia mia

Publicado por TinoS (64 intervenciones) el 11/01/2013 23:19:26
Buenas noches.

Tengo un "pequeño" problema que no entiendo.

En un campo de fecha le tengo puesta la condición de que la fecha que metamos ha de ser igual o menor que la del día de hoy.

Pues muy bien, yo le meto la fecha que sea y, si esta no es correcta me lo anuncia y me dice que esa fecha no es correcta y se pasa al campo siguiente, yo sigo metiendo todos los datos restantes y cuando he metido el resto de los datos, pincho en el botón de añadir registro y se va a un registro nuevo y se queda tan fresco.

Y mi pregunta es: ¿qué debo hacer yo para que no me permita salir de ese registro si los datos que le meto no cumplen las reglas que le tengo puestas. En una palabra que no admita ningún dato que no cumpla las reglas impuestas.

Esto que aquí pregunto en la aplicación de Lotus Approach no se da ya que la propia aplicación al añadir un registro nuevo y sin necesidad de programar de ninguna forma no admite un dato falso o que no cumpla las reglas que se han establecido para cada campo, sea del campo que fuere.

Muchas gracias por vuestra ayuda.

Un saludo.
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

Incongruencia de Access y ingnorancia mia

Publicado por jose (741 intervenciones) el 12/01/2013 10:33:44
Saludos TinoS

Lo que te hace es que al no te escribe los datos si no reune los requisitos o limites que les has marcado

Si queres que no pase sin que lo haya escrito bien debes `poner en la tabla en ese campo de la fecha


requerido -----> SI


para que sea obligatorio y de ésta forma no deja continuar si no se ha escrito bien


jose manuel desde el astillero
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

Incongruencia de Access y ingnorancia mia

Publicado por 2pl (461 intervenciones) el 12/01/2013 10:37:49
Cuando un campo no cumple las reglas de validación(siempre que la tenga puesta) no pierde el foco hasta que no se teclea algo correcto.Debes ponerle un texto de validación para que te avise del error.
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

Incongruencia de Access y ingnorancia mia

Publicado por TinoS (64 intervenciones) el 12/01/2013 19:47:26
Buenas tardes.

Gracias a los dos Jose y 2pl por ayudarme con vuestras respuestas.

Jose, este campo [Fecha] le tengo como requerido SI y la condición que le tengo es la que sigue, que funciona bien hasta el mensaje, pero luego se va al campo siguiente y no lo entiendo.

2pl. Como ves le tengo puesto el texto de validación para que me avise y me avisa, puero luego no hace caso al SetFocus.

este setfocus lo he puesto de varias formas, poniendo delante el nombre del formulario, y de todas las formas que aconsejan los manuales, pero ni caso. También he leido por ahí que esto no funciona bien, no se, habrá que ponerle un bizcocho delante.

Private Sub Fecha_AfterUpdate()

Select Case Fecha

Case Is < Me.FechaInicial

MsgBox "Esa fecha es antigüa", vbExclamation, "AVISO"
Fecha.SetFocus

Case Is > Me.FechaFinal

MsgBox "Para esa fecha falta mucho", vbExclamation, "AVISO"
Fecha.SetFocus

Case Else

Exit Sub

End Select

End Sub

esta comprobación está puesta en el formulario porque tengo que comprobar esta fecha con las fechas de otra tabla. En la tabla en la que aparece el campo este de Fecha sólo le tengo puesto requerido a SI y ahí no lo tengo limitado porque ahí, en la propia tabla, no está permitido.

Gracias de nuevo.

Un saludo.
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

Incongruencia de Access y ingnorancia mia

Publicado por deneg_nhj (349 intervenciones) el 12/01/2013 20:07:36
En el evento BeforeUpdate(Cancel As Integer), del campo Fecha
coloca una validación algo como lo siguiente

1
2
3
4
5
6
7
8
Private Sub myFecha_BeforeUpdate(Cancel As Integer)
 
    If Nz(myFecha, 0) < fec01OtraTabla  AND Nz(myFecha, 0) > fec02OtraTabla Then
        MsgBox "Fecha error", vbCritical, "Fecha menor a ???"
        Cancel = True ' <= Esto hace que no salda del campo
    End If
 
End Sub



Saludos!
www.sgh.com.mx
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

Incongruencia de Access y ingnorancia mia

Publicado por TinoS (64 intervenciones) el 12/01/2013 20:27:58
Hola deneg_nhj.

Acabo de probarlo y sigue haciendo lo msmo, me da el mensaje de error pero se pasa al campo siguiente y cuando le meto todos los datos restantes le doy a añadir registro nuevo y, sin titubear se pasa a un nuevo registro.

Gracias

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

Incongruencia de Access y ingnorancia mia

Publicado por deneg_nhj (349 intervenciones) el 12/01/2013 21:00:43
Ademas puedes colocar la misma validación en

1
2
3
4
5
6
7
8
9
Private Sub Form_BeforeUpdate(Cancel As Integer)
 
    If Nz(myFecha, 0) < fec01OtraTabla  AND Nz(myFecha, 0) > fec02OtraTabla Then
        MsgBox "Fecha error", vbCritical, "Fecha menor a ???"
        Cancel = True ' <= Esto hace que no guarde los cambios
       myFecha.setfocus
    End If
 
End Sub


www.sgh.com.mx
skype:deneg_nhj


Pero debe de funcionar!!, es algo que hago en mis validaciones todos los días.
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

Incongruencia de Access y ingnorancia mia

Publicado por TinoS (64 intervenciones) el 12/01/2013 22:08:24
Lo siento deneg_nhj pero aquí pasa algo raro.
Lo he puesto tal como me dices pero tampoco. Y yo pregunto, no hay alguna posibilidad de que a través del SQL se pueda poner en la propia tabla esta limitación que ahora pretendemos con procedimiento de evento.. Supongo que podría ser una solución.
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

Incongruencia de Access y ingnorancia mia

Publicado por deneg_nhj (349 intervenciones) el 12/01/2013 23:18:28
Por favor coloca el código con el que estás haciendo el proceso.

De ambos eventos del campo y del form

También coloca los campos de la "otra tabla" donde validas la fecha

Saludos!
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

Incongruencia de Access y ingnorancia mia

Publicado por TinoS (64 intervenciones) el 13/01/2013 00:04:01
Discúlpame deneg_nhj tengo el defecto de que me gusta el futbol.

Al final va todo el código que nos trae de cabeza.
El cödigo puesto en el formulario funciona también, pero una vez que te ha dado el mensaje de error de fecha le das a añadir nuevo registro y se traga la fecha mal puesta.

En el código van puestos los apóstrofes para evitar que funcionen de todas las probaturas que vengo haciendo.


Private Sub Fecha_AfterUpdate()

' If Nz(Me.Fecha, 0) < Me.VAL_FechaInicialValidación Or Nz(Me.Fecha, 0) > VAL_FechaFinalValidación Then
' MsgBox "Fecha error", vbCritical, "Fecha menor a ???"
' ' Cancel = True ' <= Esto hace que no salda del campo
' Me.Fecha.SetFocus
' End If

Select Case Fecha

Case Is < Me.VAL_FechaInicialValidación

Me.Fecha.SetFocus
MsgBox "Esa fecha no es correcta, no pertenece al ejercicio actual", vbExclamation, "AVISO"
' OnGotFocus = Fecha
' Cancel = True
' MyFecha.SetFocus

Case Is > Me.VAL_FechaFinalValidación

Me.Fecha.SetFocus
MsgBox "Esa fecha no es correcta, corresponde a ejercicios futuros", vbExclamation, "AVISO"
' OnGotFocus = Fecha
' Cancel = True
' MyFecha.SetFocus

Case Else

Exit Sub

End Select

End Sub

Private Sub Form_AfterUpdate()

If Nz(Me.Fecha, 0) < Me.VAL_FechaInicialValidación Or Nz(Me.Fecha, 0) > VAL_FechaFinalValidación Then
MsgBox "La fecha no es correcta", vbCritical, "Fecha menor a ???"
Cancel = True ' <= Esto hace que no salda del campo
Me.Fecha.SetFocus
End If

End Sub
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

Incongruencia de Access y ingnorancia mia

Publicado por TinoS (64 intervenciones) el 13/01/2013 00:52:55
Discúlpame de nuevo porque yo tenía puesto el evento en "después de actualizar" y tu me tienes puesto el evento en "antes de actualizar".

Lo he puesto ahora ahí y funciona correctamente. Lo siento haberte hecho quebrar la cabeza un poquito.

Private Sub Fecha_BeforeUpdate(Cancel As Integer)

If Nz(Me.Fecha, 0) < Me.VAL_FechaInicialValidación Or Nz(Me.Fecha, 0) > VAL_FechaFinalValidación Then
MsgBox "La fecha no es correcta", vbCritical, "Fecha menor a ???"
Cancel = True ' <= Esto hace que no salga del campo
Me.Fecha.SetFocus
End If

End Sub

Muchas gracias por todo y buenas noches.

Un saludo.
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