** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Marcar casilla de verificación
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoMarcar casilla de verificación

 Responder Responder
Autor
Mensaje
mfafa Ver desplegable
Asiduo
Asiduo


Unido: 23/Septiembre/2009
Localización: España
Estado: Sin conexión
Puntos: 497
Enlace directo a este mensaje Tema: Marcar casilla de verificación
    Enviado: 28/Octubre/2020 a las 11:55
Buenos días!

Tengo dos tablas "Clientes" y "Pedidos" relacionadas entre sí por el campo "Id_Cliente" Y "Cliente" de las dos tablas respectivamente, la relación es de uno a varios de forma que el "ID_Cliente" tiene varios pedidos. Hasta aquí todo bien.

Tengo un formulario "Clientes" y un subformulario continuo "Pedidos" insertado en el formulario.
en el subformulario tengo un control de casilla de verificacion llamado "Finalizado" (Campo que existe en la tabla "Pedidos").

Lo que pretendo es cuando escribo un pedido en el primer registro del subformulario este control se quede sin marcar, y cuando añado otro registro acontniuación me marue el control Finalizado pero del ultimo o anterior registro añadido.
He intentado con este código pero me marca siempre el actual:-


Private Sub Form_Current()
If DCount("[Cliente]", "[Pedidos]") < 2 Then
Exit Sub
Else
Me.Finalizado = -1
End If
End Sub

Espero haberme explicado.

Muchas Gracias.


Editado por mfafa - 28/Octubre/2020 a las 11:59
Arriba
ximo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 2085
Enlace directo a este mensaje Enviado: 28/Octubre/2020 a las 13:58
Hola,
Un poco lioso si es, pero te planteo lo siguiente, si terminas el registro y ahí mismo tienes la casilla porque no la clicas ya que el pedido está finalizado?

Con me.xxxxx  indicas el registro que estás por eso te clica el actual has de consultar el últmo registro de la tabla "pedidos" y seleccionar la casilla con el -1, para mí lioso de la leche cuando lo fácil es en el momento.


Saludos, ximo
La incansable busqueda de información abre nuestras mentes

Saludos desde Burriana
Arriba
mfafa Ver desplegable
Asiduo
Asiduo


Unido: 23/Septiembre/2009
Localización: España
Estado: Sin conexión
Puntos: 497
Enlace directo a este mensaje Enviado: 28/Octubre/2020 a las 15:29
Buenas tardes!
Muchas gracias por la respuesta. Tongue
La idea es cuando se añada otra línea de regsitro ya que muchas veces se queda en el primer regsitro y ahi no quiero finalizar el pedido.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 28/Octubre/2020 a las 15:29
Podrias mediante una consulta de actualizacion, la cuestion seria saber si el registro que estas creando se a guadado o no. Yo lo haria justo cuando lo creas pero no se a guardado, hay que la consulta de actualizacion actualice a true esa casilla con el ultimo registro, recuerda que estarias creando uno pero sin guardar, por lo tanto seria el ultimo registro
Arriba
mfafa Ver desplegable
Asiduo
Asiduo


Unido: 23/Septiembre/2009
Localización: España
Estado: Sin conexión
Puntos: 497
Enlace directo a este mensaje Enviado: 04/Noviembre/2020 a las 00:59
Buenas noches!

Con el siguiente código me marca la casilla de verificación pero me surge un problema de que se queda ahí y no sale.


Private Sub TipoPedido_AfterUpdate()
Dim cuenta
cuenta = DCount("[Id_Pedido]", "[Pedidos]", "[Cliente]=" & Form_Clientes.Id_Cliente) >= 1
If cuenta And Me.fin = 0 Then
MsgBox "debes finalizar el proceso anterior"
Me.Undo
DoCmd.GoToRecord , , acLast
Me.TipoPedido.SetFocus
Me.finalizado = -1
Exit Sub
End If
End Sub

Ahora no se cómo decirlo a Access que cuando Finalizado esté activo que vaya a nueva fila?

Muchas gracias.

Un saludo.


Editado por mfafa - 04/Noviembre/2020 a las 01:00
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14734
Enlace directo a este mensaje Enviado: 04/Noviembre/2020 a las 09:34
Para ir al siguiente registro creo que te basta con: 

DoCmd.GoToRecord ,,acNext

Edito: para nuevo cambia acNext por acNewRec


Editado por xavi - 04/Noviembre/2020 a las 09:34
Xavi, un minyó de Terrassa

Mi web
Arriba
mfafa Ver desplegable
Asiduo
Asiduo


Unido: 23/Septiembre/2009
Localización: España
Estado: Sin conexión
Puntos: 497
Enlace directo a este mensaje Enviado: 04/Noviembre/2020 a las 12:39
Buenas!

Por fin he dado con la solución. El problema era (Me.Undo) que deshace los cambios a nivel de formulario, hay que actuar a nivel de control (Me.NombreControl.Undo):

Private Sub TipoPedido_AfterUpdate()
Dim cuenta
cuenta = DCount("[Id_Pedido]", "[Pedidos]", "[Cliente]=" & Form_Clientes.Id_Cliente) >= 1
If cuenta Then
MsgBox "debes finalizar el proceso anterior"
Me.TipoPedido.Undo
DoCmd.GoToRecord , , acLast
Me.TipoPedido.SetFocus
Me.finalizado = -1
Exit Sub
End If
End Sub

Muchas gracias por todo. 

Se puede cerrar.


Editado por mfafa - 04/Noviembre/2020 a las 12:40
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable