Soy muy nuevo en el Acceso y estoy tratando de calcular el salario del empleado basado en la no de días laborados.
Para esto he creado un Formulario para ingresar el número de días de presencia y calcular el salario devengado según la entrada.Ahora quiero pasar este salario devengado valor para el campo de la tabla.
Puede usted por favor me ayude

  • El resultado de lo que su cálculo y, a continuación, en VBA ejecutar una consulta de actualización para afectar el valor correspondiente en la tabla. DoCmd.RunSQL puede ser utilizado en VBA para ejecutar una instrucción SQL. Si quieres más ayuda, más allá de que vamos a necesitar más información.
  • He tratado de escribir Después de Actualizar Caso de que el campo calculado de la Forma, pero no su actualización en mi mesa.Puede usted pleaase me corrija si me equivoco nd ayudarme cómo escribir
InformationsquelleAutor user2950701 | 2013-11-05

2 Comentarios

  1. 1

    En primer lugar algunos de mantenimiento de la casa; Con sus nombres de campo es mejor que no tenga espacios en ellos, hace que sea mucho más fácil para el código (de la cadena SQL parece que puede haber hecho esto, pero acabo de comprobar). También, evitar el uso de palabras reservadas como nombres de campo por ejemplo no usar el Nombre como un nombre de campo, hay una lista de Visual Basic palabras reservadas aquí que cubrirá todo lo que VBA y un poco más.

    En segundo lugar, parece que se va a almacenar un campo calculado – EarnedSalary es un cálculo de BasicPay, TotalWorkingDaysInMonth y ActualWorkedDays. En general el almacenamiento de los campos calculados, es considerado como un no-no, ref Allen Browne del la página en los campos calculados. En esta página Allen le da algunos consejos sobre los campos calculados que puede ayudar, especialmente si usted decide que usted desea almacenar y utilizar Access 2010 (estoy sólo en 2007…).

    Cuanto a tu pregunta, todavía no me dicen donde su error fue así que es difícil pin-punto de la cuestión. Mi conjetura es que usted está llamando a la actualización de África en el lugar equivocado – desea actualizar EarnedSalary pero usted llama el proceso en la AfterUpdate de ese control, por lo tanto, el código no el fuego hasta que se actualice el campo el código está destinado a actualizar. El código debe estar en la AfterUpdate de ActualWorkedDays.

    Además, parece que estás usando un formulario dependiente que significaría que no es necesario utilizar el SQL de actualización, una solución similar a la de Allen ejemplo sería suficiente:

    En el formulario si usted tiene un control para cada uno de los campos que intervienen en el cálculo:

    Private Sub ActualWorkedDays_AfterUpdate()
         Me.EarnedSalary = Me!BasicPay /Me!TotalWorkingDays * Me!ActualWorkedDays
    End Sub
    
  2. 0

    Bastante genérico como usted no ha dado mucho detalle, pero algo como esto en la AfterUpdate debería funcionar:

    Asumir los controles en el formulario son:

    txtEmpID para el ID de empleado,
    txtHourlyRate por lo que para multiplicar el número de horas o por,
    txtHoursWorked como lo que de entrada como horas trabajadas

    Dim dblEarnings as Double
    
    dblEarnings = me!txtHourlyRate * me!HoursWorked
    
    CurrentDb.Execute "INSERT INTO [tblYourTable] (EmployeeID, EarnedSalary) VALUES (" _
        & Me!txtEmpID & "," & dblEarnings & ")",dbFailOnError
    

    Probablemente voy a mirar para registrar las horas trabajadas y la tarifa por hora y calcular el salario sobre la marcha en lugar de almacenar un número calculado. O la tienda de las horas y los totales y cálculo de la tarifa por hora si es necesario.

    • Estoy muy agradecido con ustedes.Yo ahev tratado de la misma para ejecutar la Consulta SQL, pero su muestra una relación de objeto.Puede usted por favor me ayude .
    • Lo siento, no estoy seguro a qué te refieres cuando dices que se le está mostrando una relación de objeto. Puedes editar tu respuesta y poner el código en y me dicen más sobre el error que se reciben?
    • Hola Simon Puede usted por favor me para resolver esto, de nuevo, he intentado sam eyour código no es todavía rellenar los datos en la tabla.
    • Necesito más información: ¿Cuál es tu tabla se llama? Cuáles son los campos que necesitan llenar? ¿Qué es el cálculo de su salario? ¿Cuáles son los controles en el formulario llamado? Editar tu pregunta y pegar el código y yo debería ser capaz de hacer algunos progresos.
    • han Creado un Empleado de la tabla con los siguientes campos :EMP Id ,Nombre,salario Básico,el Total de Días de Trabajo en un mes,Real de Días laborados ,Ganado el Sueldo.Ahora he creado el Formulario con todos los campos de la Tabla y estoy calcular el Salario Devengado a partir del Control de origen mediante el Salario Devengado=BasicPay/no Total de Días de trabajo en el mes* Los Días de Trabajo.Ahora quiero rellenar este campo calculado en la tabla. Me va a dar la cantidad Real de Días como entrada en el formulario, ya que este valor va a cambiar para los empleados en función de sus Días presentes.Así,Puede usted por favor me ayude a salir. –
    • Private Sub EarnedSalary_AfterUpdate() Dim dblEarnings Como Doble dblEarnings = Me!BaicPay / Me!TotalWorkingDays * Me!ActualWorkedDays Dim strSQL Como Cadena strSQL = «UPDATE [PR] CONJUNTO EarnedSalary =» & a Mí![dblEarnings] & «;» CurrentDb.Ejecutar strSQL, dbFailOnError End Sub

Dejar respuesta

Please enter your comment!
Please enter your name here