Al llegar al ultimo registro cambie el setfocus

Quisiera saber como hacer con código VB para que cuando llegue al final del ultimo registro

La tabulación cambie al botón salir.

El ultimo campo seria saldo

1 Respuesta

Respuesta
2

Si tengo el formulario, donde puedes ver que el cursor está en el ultimo control del último registro

Si pulso Enter, puedes ver que el cursor se ha ido al botón.

El código del evento Al perder el enfoque del cuadro de texto Pais( es tu caso saldo) es

Private Sub Pais_LostFocus()
If Me.CurrentRecord = Me.Recordset.RecordCount Then
Comando9.SetFocus
End If
End Sub

Es decir, si el número de registro es igual al del total de registros, que el foco se vaya al botón.

Si eso probé, pero no me funciono

La tabla esta bloqueada casi en su totalidad solo se puede poner un numero y actualiza un saldo

Y no tiene selector de registros.

Lo habilite por si era eso y tampoco me funciona

Pues pon el código, en el evento Al perder el enfoque del cuadro de texto donde escribes ese número que citas.

Cuando el número de registros es 1 funciona a la perfección. Pero ya con dos no se por que no funciona. Cuando esta el último. Es muy extraño

Pon una imagen de tu formulario

Estoy desde el celular. No me permite

Pero es una subfom en modo hijo de datos. Con tod bloqueados menos editar y los campos están bloqueados salvo ese que uso. Pasa que si llega al final toma un nuevo registro y me da error ya que al estar bloqueado el código lo pode prioritario. Y me produce el error. Por eso necesito que llegue al final del ultimo registro y setfocus a salir

Aquí termino

Por un lado, si el control donde únicamente vas a poner Oh, o lo que sea se llama 1 a secas, no te va a funcionar porque como en la instrucción le dices

If 1="OK" 

Access entiende que no es así, por eso, aunque en la etiqueta le pongas 1 al control llámalo, por ejemplo, A1

Si tengo el formulario en vista hoja de datos( que jamás de los jamases le he visto alguna utilidad)

Y como según dices quieres poder cambiar el valor en el campo 1

Si escribo algo en el control 1 del segundo registro, como no es OK me deja escribir en los otros

Pero si escribo OK en el primer registro

Puedes ver que después de escribir OK, los demás controles de ese registro se han decolorado, eso es que están inhabilitados( sería exactamente lo mismo que si estuvieran bloqueados, pero es para que veas que se decoloran)

Si volviera al primer registro, como pone OK se volverían a decolorar, menos el 1 que es el que dices que quieres poder cambiar.

Vamos a suponer que relleno el último registro y en Saldo( no sé si lo rellenas, sino el código se pondría en el último control que rellenaras de ese registro). Cuando pulso Enter( que tambien equivale Al perder el enfoque), puedes ver que no sigue rellenando registro, sino que el cursor se va al botón del formulario

El código del formulario es

Private Sub A1_AfterUpdate()
If A1 = "ok" Then
Codigo.Enabled = False
Producto.Enabled = False
A2.Enabled = False
Barra.Enabled = False
Deposito.Enabled = False
Stock.Enabled = False
Real.Enabled = False
Saldo.Enabled = False
Else
Codigo.Enabled = True
Producto.Enabled = True
A2.Enabled = True
Barra.Enabled = True
Deposito.Enabled = True
Stock.Enabled = True
Real.Enabled = True
Saldo.Enabled = True
End If
End Sub
Private Sub Form_Current()
If A1 = "ok" Then
Codigo.Enabled = False
Producto.Enabled = False
A2.Enabled = False
Barra.Enabled = False
Deposito.Enabled = False
Stock.Enabled = False
Real.Enabled = False
Saldo.Enabled = False
Else
Codigo.Enabled = True
Producto.Enabled = True
A2.Enabled = True
Barra.Enabled = True
Deposito.Enabled = True
Stock.Enabled = True
Real.Enabled = True
Saldo.Enabled = True
End If
End Sub
Private Sub Saldo_LostFocus()
If Me.CurrentRecord = Me.Recordset.RecordCount Then
Me.Parent!Comando56.SetFocus
End If
End Sub

Y no hace falta que los controles estén previamente bloqueados, ya que si en 1 pone Ok se bloquean( o se inhabilitan como es este caso)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas