Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/11/2008, 19:15
AlexisLAG
 
Fecha de Ingreso: noviembre-2008
Mensajes: 38
Antigüedad: 15 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Buscar Mediante dos Tablas

AQUI ENVIO UN POCO MAS DE AYUDA

Esto colocarlo en un modulo bas
Option Explicit
Public cnn As New ADODB.Connection
Public RS As New ADODB.Recordset
Public rsS As New ADODB.Recordset
Public RS1 As New ADODB.Recordset

Código para conectar a tu archivo en acces que contiene las tablas
Public Sub IniciarConexion()
With cnn
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "\Informe.mdb" & ";Persist Security Info=False"
End With
End Sub




Este código que se debe realizar antes de la impresión del informe, realizando nose una llamada a un forms para cagar fechasDesde y Fechas Hasta

.
.
.' aca cargamos en rs todos los empleados de nuestra tabla.
If RS.State = adStateOpen Then
RS.Close
End If
sql = "SELECT * FROM tabladeEmpleados "
RS.Open sql, cnn, adOpenStatic, adLockOptimistic
.
.
.

.' aca cargamos en rs1 a todos los empleados que asistieron en un determinado periodo de mes
If RS1.State = adStateOpen Then
RS1.Close
End If
sql = "SELECT * FROM tabladeasistencia where fecha > = ' " & txtFECHADESDE & " ' and fecha <= ' " & _
txtFECHAHASTA & "' "
RS1.Open sql, cnn, adOpenStatic, adLockOptimistic
.
.

.' debería el operador ingresar desde que fecha y hasta que fecha se debe controlar, supongamos que las ingreso en las variable FechasDesde y FechasHasta con formato "dd/mm/yyyy", donde deberas controlar que la FechaHasta es mayor o igual a FechasDESDE, también tendrías una tabla que se llame inasistencia con los mismos campos que la de asistencia (id, codigodelEmpleado, Dia,departamento) supongamos ya que no conozco la estructura de la tabla asistencia.





'esto seria en un boton donde ya esten ingresadas las fechas
Dim i, fecha1, ASISTIO ' FECHA1 CONTENDRA LA FECHA PARA RECORRERLAS A TODAS, LO UNICO QUE NO DISTINGUE LOS DIAS QUE NO TRABAJAN POR EJEMPLO SABADOS Y DOMINGOS
' LA FORMA DE SOLUCIONAR SERIA COLOCAR UN CONTROL DE LOS DIAS QUE NO SE TRABAJAN

fecha1 = FechasDesde
For i = 0 To (FechasHasta - FechasDesde)

' ACA DEBES REALIZAR UNA FUNCION PARA BORRAR TABLA DE INASISTENCIA
If FUNCION_Control_FECHA_que_NO_TRABAJAMOS(fecha1) Then ' SI LA FUNCION ES TRUE SIGUE SINO CONTUNA CON LA PROXIMA FECHA
If RS.RecordCount > 0 Then
RS.MoveFirst
' recorre el recordset PARA COMPARAR SI EL EMPLEDO X SE ENCUENTRA EN LA TABLA SERIA SUPONGAMOS (ID, CODIGOEMP,NOMBEMP, DEPEMPL)
While Not RS.EOF
ASISTIO = False
If RS1.RecordCount > 0 Then
RS1.MoveFirst
While Not RS1.EOF
' SUPONGAMOS QUE LA TABLA DE ASISTENCIA ES(id, codigodelEmpleado, DiaASIS,departamento)
If RS1!.CODIGODELEMPLEADO = RS!CODIGOEMP Then
ASISTIO = True
End If
RS1.MoveNext
Wend
End If
If Not ASISTIO Then
' SUPONGAMOS QUE LA TABLA DE INASISTENCIA ES(id, codigodelEmpleado, DiaASIS,departamento) 'CON EL ID EN LA TABLA AUTOMATICO, ACA CARGAMOS LOS DATOS DE LOS QUE NO HAN ASITIDO A TRABAJAR
cnn.Execute "INSERT INTO TABLADEINASISTENCIA " & "(codigodelEmpleado, DiaASIS,departamento) VALUES('" & _
RS!CODIGOEMP & "','" & _
fecha1 & "','" & _
RS!DEPEMPL & "')"
rsS.Open sql, cnn, adOpenStatic, adLockOptimistic
End If
RS.MoveNext
Wend
End If
fecha1 = fecha1 + 1
End If
Next i


cualquier cosa avisame....

Última edición por AlexisLAG; 13/11/2008 a las 05:24