none
Ayuda Para crear una Función para actualizar tabla RRS feed

  • Pregunta

  • Buenas Tardes, les cuento, tengo las siguientes tablas

    Trabajador almacenas los datos de cada trabajador ingresado al sistema

    - Saldos: Almacena la cantidad de días que posee cada trabajador para la solicitud de permisos

    -Tipo de permiso : es la tabla que almacena los diferentes tipo de permisos por ejemplo : vacaciones que posee 15 días.

    Lo que necesito hacer es una función que los primeros de cada año me actualice los saldos de cada usuario, recorriendo la tabla Trabajador y asignando en la tabla saldos la cantidad de días  según los tipos de permisos creados. Ojala me puedan orientar a realizar esto, saludos.

    domingo, 29 de septiembre de 2013 18:07

Todas las respuestas

  • hola

    el enunciado se entiende, pero que es lo que intentado implementar hasta el momento?

    o sea algo de ado.net conoces como para realizar una query que cargue un datareader o datatable ? porque si es asi ya tendrias el loop cubierto para realizar el ciclo por cada registro

    despues es cuestion de hacer cuentas y lanzar el UPDATE, quizas si proporcionas algo de la estructura que estas realizando se puedan aportar mejoras

    la idea del foro es guiar para resolver un probema, y no dar la respuesta completa, sino no te ayudamos para que aprendas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 29 de septiembre de 2013 19:08
  • Hola Leandro, te encuentro toda la razon, disculpa por no mencionar lo que he intentado realizar

    Dim rut_trabajador As String
            Dim id_permiso As Integer
            Dim cantidad As Integer
    
            If DateTime.Now.ToString("dd/MM/yyyy") = "29-09-2013" Then
    
                regD = BD.Execute("select Trabajador.rut_trabajador, Saldos.rut_trabajador, Saldos.id_permiso, Saldos.saldo, Tipo_permiso.id_permiso," & _
                                  " Tipo_permiso.cantidad_dias from Tipo_permiso left join Saldos on Saldos.id_permiso=Tipo_permiso.id_permiso left join" & _
                                  " Trabajador on Trabajador.rut_trabajador=Saldos.rut_trabajador")
    
                Do While Not regD.EOF
    
                    rut_trabajador = regD.Fields("rut_trabajador").Value
                    id_permiso = regD.Fields("id_permiso").Value
                    cantidad = regD.Fields("cantidad_dias").Value
    
                    regD.MoveNext()
    
                    BD.Execute("update Saldos set saldo = '" & cantidad & "' where rut_trabajador = '" & rut_trabajador & "'")
                Loop
    
            End If

    Al momento de ejecutar el código anterior me actualiza la cantidad de días de  cada usuario según la fecha señalada, el problema que tengo es que ha todos los trabajadores le asigna la cantidad de días del ultimo tipo de permiso ingresado y no ase una asignación por cada tipo de permiso.

    Por ejemplo tengo los siguientes permisos

    Vacaciones 15 dias

    Administrativo 5 dias

    Y los siguientes Trabajadores

    22.222.222-2

    33.333.333-3

    entonces al momento de ejecutar la consulta me ase la siguiente asignación

    22.222.222-2 - 5 dias permiso administrativo

    22.222.222-2- 5 dias permiso administrativo

    33.333.333-3- 5 dias permiso administrativo

    33.333.333-3- 5 dias permiso administrativo

    y debería ser

    22.222.222-2 - 15 dias permiso Vacaciones

    22.222.222-2- 5 dias permiso administrativo

    33.333.333-3- 15 dias Vacaciones

    33.333.333-3- 5 dias permiso administrativo

    Espero haber sido claro con el problema que tengo, de ante mano muchas gracias.

    domingo, 29 de septiembre de 2013 19:40
  • en lugar de esto

    If DateTime.Now.ToString("dd/MM/yyyy") = "29-09-2013" Then

    podrias hacer

    If DateTime.Now.Date = Convert.ToDatetime("29-09-2013") Then

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 29 de septiembre de 2013 20:09
  • que significa esto

    Do While Not regD.EOF

    esta usando ADODB ? porque no dbeerias hacerlo

    se supone que debes usar ADO.NET

    o sea cargar un datatable o datareader, no se programa con los componente de VB6

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 29 de septiembre de 2013 20:10
  • Uff si la verdad siempre he tenido problemas con lo que mencionas nunca he podido realizar conexiones a través de ADO.NET, aun no pierdo la esperanza de mejorar el código y realizarlo como realmente debería ser.

    domingo, 29 de septiembre de 2013 20:32
  • Leandro lo otro que me causa una duda es de esta forma se le asigna una fecha en especifica

    If DateTime.Now.Date = Convert.ToDatetime("29-09-2013"Then

    pero como deveria ser si quiero que sea el 01 de enero independiente del año?

    Lo otro como puedo recorrer al igual que la tabla trabajador, la tabla tipo de permiso para hacer una distribución correcta de los días que corresponde? 

    domingo, 29 de septiembre de 2013 20:46