Auto Relleno de textbox en Access

Tardes

Amigos expertos en Access, requiero sus ayudas al siguiente caso:

Tengo un formulario con dos (2) textbox, en el primer textbox ingreso una fecha y en el segundo textbox quiero que se auto llene con un campo especifico llamado Sueldo que se encuentra en el último registro de una tabla llamada SueldoDecretado

La tabla SueldoDecretado, tiene tres columnas detallada de la siguiente forma

Id_SueldoDecretado, FechaDecreto, Sueldo

Imagino que esto se hace con Macros Access o Visual Basic de tal forma que una vez que se ingrese la fecha en el primer textbox e inmediatamente al enfocase el segundo textbox me ingrese el sueldo que se encuentra en el ultimo registro en la tabla SueldoDecretado

Respuesta
1

En el Evento al Perder el Enfoque del Campo Fecha colocas las siguientes Líneas de Código VBA.

Justo entre:

Private Sub txt_Fecha_LostFocus() 

         (Código Aquí)

End SUb

'En el Evento: Al perder el Enfoque del Campo: txt_Fecha Colocamos el Siguiente Codigo.
Dim xSueldo As Double 'Variable para almacenar el valor de la consulta.
'Obtener el Sueldo correspondiente al Ultimo Registro de la tabla (SueldoDecretado) donde el campo fecha sea igual a la fecha ingresada por el usuario en (txt_Fecha).
    xSueldo = Nz(DLast("Sueldo", "SueldoDecretado", "[FechaDecreto]=#" & Me.txt_Fecha.Value & "#"), 0)
    Me.txt_Sueldo = xSueldo 'Ahora Pasamos el Valor de la Variable al Campo: (txt_Sueldo)
   

Este Código te Devolverá el Ultimo Sueldo de la tabla que coincide con la fecha ingresada. Si no existe, entonces devuelve 0.

Puedes Mejorar el código Evaluando con un If que al momento de perder el enfoque en el campo fecha no este vació. de esta manera...

Option Compare Database
Option Explicit
'En el Evento: Al perder el Enfoque del Campo: txt_Fecha Colocamos el Siguiente Codigo.
Private Sub txt_Fecha_LostFocus()
If IsNull(txt_Fecha) = False Then 'Si el Campo fecha no esta Vacio al momento de perder el enfoque hace....
    Dim xSueldo As Double 'Variable para almacenar el valor de la consulta.
    'Obtener el Sueldo correspondiente al Ultimo Registro de la tabla (SueldoDecretado) donde el campo fecha sea igual a la fecha ingresada por el usuario en (txt_Fecha).
        xSueldo = Nz(DLast("Sueldo", "SueldoDecretado", "[FechaDecreto]=#" & Me.txt_Fecha.Value & "#"), 0)
        Me.txt_Sueldo = xSueldo 'Ahora Pasamos el Valor de la Variable al Campo: (txt_Sueldo)
Else 'Si el Campo fecha esta Vacio al momento de perder el enfoque, entonces....
    MsgBox "Debe Ingresar Una Fecha para Continuar", vbInformation + vbOKOnly, "FALTA EL PARAMETRO FECHA" 'Manda un mensaje...
    Me.txt_Sueldo.SetFocus
    Me.txt_Fecha.SetFocus 'regresamos el enfoque al campo (txt_Fecha)
End If
End Sub

1 respuesta más de otro experto

Respuesta
2

Por partes. No dices si la fecha que escribes en el formulario es "igual" a alguna de la tabla. Si ese fuera el caso podrías poner en el evento Después de actualizar del cuadro de texto donde escribes la fecha

Texto2=dlookup("sueldo","sueldodecretado","fechadecreto=forms!nombredelform!texto1")

Por el contrario, si la fecha que escribes "no tiene nada que ver" con la tabla, en el mismo evento Después de actualizar del cuadro de texto1 o en el evento Al recibir el enfoque del cuadro de texto2

Texto2=Dlast("sueldo","sueldodecretado")

En este caso te pondría el valor de sueldo del último registro de la tabla.

Hola Icue, gracias por la pronta repuesta, Aplicando tu sugerencia, Resulta que me modifica la información, guardada en la base de dato, Es decir me modifica los datos de la columna MontoSueldoMinimo, Lo colocas todos en 40,000.00 BsS y la idea es mantener la información ya guardada originalmente. Anexo las captura de pantallas del Proyecto. Creo que no supe hacer bien la consulta y me disculpa por tal.

Detalles:

La fecha de Elaboración, es la fecha de carga de nomina 

Sueldo Minimo, es el monto del sueldo para el día de la fecha de carga de la nomina

Cabe señalar que los Sueldo Minimo , lo aumentan dos o tres veces al años. Actualmente el TextBox de Sueldo Minimo en el formulario se carga manualmente y es propenso a carga errónea en el monto, aparte que la nomina si tiene muchos socios mas fácil es errar en el monto. Motivo por el cual quiero el Auto relleno

Eduardo, creo que es mejor, que si quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando un ejemplo, que es como mejor se ve. Si lo haces, en el asunto del mensaje pon tu alias Eduardo, ya que si no sé quien me escribe ni los abro.

¡Gracias! Amigo,

El ejemplo que me hizo llegar, me fue de gran Ayuda. Mi Access es básico. Creo que ahora tendré que aprender lo básico VBA ACCESS. Cualquier otra duda que me sarga no dudare en en seguir consultando. Estoy tratando de hacer una base de dato. Para una asociación de jubilado. Llamada AJUPTEL, a la cual pertenezco. En vista a que toda las operaciones de esta asociación se lleva a nivel de libros, lo cual dificulta en tiempo una repuesta inmediata. Me he propuesto a tratar de hacer una base de datos sencilla y que cumpla a con las necesidades administrativa de la Asociación.

Te garantizo, con una certeza del 100%, que si sigues en esto de Access te irás pasando hasta hacerlo todo en código. Es lo más versátil.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas