Sistema para control de tiempo y asistencia de personal (página 4)
Enviado por Ing.Licdo. Yunior Andrés Castillo Silverio
MisDatos.Close
End Sub
Public Sub LLenaDatos(num As Integer, Datos() As String)
sql = "select * " _
& "FROM Turnos INNER JOIN (Personal INNER JOIN marcacion ON Personal.codigo = marcacion.codigo) " _
& "ON Turnos.codigo = marcacion.cod_turno where marcacion.Num_marcacion= " & num & ""
MisDatos.Open sql, MiConexion, , , adCmdText
With MisDatos
Datos(0) = !nombre1 + " " + !nombre2
Datos(1) = !apellido1 + " " + !apellido2
Datos(2) = CStr(!hora_ing) + ":" + CStr(!minuto_ing) + ":" + CStr(!segundo_ing) _
& " " + CStr(!dia_ing) + "/" + CStr(!mes_ing) + "/" + CStr(!anio_ing + 2000)
FrmConsulta.ImgIngreso.Picture = LoadPicture(App.Path + "fotosm" + CStr(num) + "_1.jpg")
If MisDatos!Estado = 2 Then
Datos(3) = CStr(!hora_sal) + ":" + CStr(!minuto_sal) + ":" + CStr(!segundo_sal) _
& " " + CStr(!dia_sal) + "/" + CStr(!mes_sal) + "/" + CStr(!anio_sal + 2000)
FrmConsulta.ImgSalida.Picture = LoadPicture(App.Path + "fotosm" + CStr(num) + "_2.jpg")
Else
Datos(3) = "NO APLICA"
End If
Datos(4) = CStr(!horas_trab)
Datos(5) = CStr(!minutos_trab)
Datos(6) = CStr(!h_ex_m)
Datos(7) = CStr(!m_ex_m)
Datos(8) = CStr(!h_ex_t)
Datos(9) = CStr(!m_ex_t)
Datos(10) = CStr(!horas_nocturnas)
Datos(11) = CStr(!minutos_nocturnas)
Datos(12) = CStr(!nombre)
Datos(13) = CStr(!horad1) + ":" + CStr(!minutod1) + " +/- " + CStr(!toled1) + " " + CStr(!horah1) + ":" + CStr(!minutoh1) + " +/- " + CStr(!toleh1)
Select Case !observacion
Case 0
Datos(14) = "TODO CORRECTO"
Case 1
Datos(14) = "NO HAY UNA ASIGNACION DE TURNO"
Case 2
Datos(14) = "ATRAZO"
Case 3
Datos(14) = "SALIDA ANTES DE TIEMPO"
Case 4
Datos(14) = "ENTRADA ANTES DE TIEMPO"
Case 5
Datos(14) = "ATRAZO Y SALE ANTES"
Case 6
Datos(14) = "ENTRA PRONTO Y SALE PRONTO"
Case 7
Datos(14) = "NO HA MARCADO LA SALIDA"
End Select
.Close
End With
End Sub
Public Function Consultando(CodPer As Integer) As Boolean
sql = "select codigo from marcacion where codigo=" & CodPer & " and estado=1"
MisDatos.Open sql, MiConexion, , , adCmdText
If MisDatos.BOF = True And MisDatos.EOF = True Then
Consultando = False
Else
Consultando = True
End If
MisDatos.Close
End Function
Public Sub LLenarReporte(F1 As String, F2 As String, Cuantos As Integer, Tabla As MSFlexGrid)
Dim L1(3) As Integer
Dim L2(3) As Integer
Dim Fila As Integer
L1(0) = Day(F1)
L1(1) = Month(F1)
L1(2) = Year(F1) – 2000
L2(0) = Day(F2)
L2(1) = Month(F2)
L2(2) = Year(F2) – 2000
If Cuantos = 1 Then
sql = "SELECT Personal.nombre1, Personal.nombre2, Personal.apellido1, Personal.apellido2, " _
& "Sum(marcacion.h_ex_t) AS ExH100, Sum(marcacion.m_ex_t) AS ExM100, Sum(marcacion.h_ex_m) " _
& "AS ExH50, Sum(marcacion.m_ex_m) AS ExM50, Sum(marcacion.horas_trab) AS HorasT, " _
& "Sum(marcacion.minutos_trab) AS MinutosT, Sum(marcacion.horas_nocturnas) AS HorasN, " _
& "Sum(marcacion.minutos_nocturnas) AS MinutosN, marcacion.dia_ing, marcacion.mes_ing, marcacion.anio_ing, " _
& "marcacion.estado " _
& "FROM Personal INNER JOIN marcacion ON Personal.codigo = marcacion.codigo " _
& "GROUP BY Personal.nombre1, Personal.nombre2, Personal.apellido1, Personal.apellido2, " _
& "marcacion.dia_ing, marcacion.mes_ing, marcacion.anio_ing,marcacion.estado " _
& "HAVING marcacion.dia_ing>=" & L1(0) & " AND marcacion.dia_ing<=" & L2(0) & " " _
& "AND marcacion.mes_ing>=" & L1(1) & " AND marcacion.mes_ing<=" & L2(1) & " " _
& "AND marcacion.anio_ing>=" & L1(2) & " AND marcacion.anio_ing<=" & L2(2) & " " _
& "AND marcacion.estado=2"
Else
sql = ""
End If
MisDatos.CursorType = adOpenDynamic
MisDatos.Open sql, MiConexion, , , adCmdText
Tabla.Rows = 1
If MisDatos.BOF = True And MisDatos.EOF = True Then
Tabla.Enabled = False
Else
Fila = 1
MisDatos.MoveFirst
While MisDatos.EOF = False
Tabla.Rows = Fila + 1
Tabla.TextMatrix(Fila, 0) = MisDatos!nombre1 + " " + MisDatos!nombre2 + " " + MisDatos!apellido1 + " " + MisDatos!apellido2
Tabla.TextMatrix(Fila, 1) = CStr(MisDatos!HorasT) + ":" + CStr(MisDatos!MinutosT)
Tabla.TextMatrix(Fila, 2) = CStr(MisDatos!HorasN) + ":" + CStr(MisDatos!MinutosN)
Tabla.TextMatrix(Fila, 3) = CStr(MisDatos!ExH50) + ":" + CStr(MisDatos!ExM50)
Tabla.TextMatrix(Fila, 4) = CStr(MisDatos!ExH100) + ":" + CStr(MisDatos!ExM100)
Fila = Fila + 1
MisDatos.MoveNext
Wend
Tabla.Enabled = True
End If
MisDatos.Close
End Sub
BD_Personal:
Option Explicit
Private MisDatos As ADODB.Recordset
Private MisDatosAux As ADODB.Recordset
Private MiConexion As ADODB.Connection
Private sql As String
Private mcodigo As Integer
Private mtipo As Integer
Private mnombre1 As String
Private mnombre2 As String
Private mapellido1 As String
Private mapellido2 As String
Private mcontrasena As String
Private mDireccion As String
Property Get codigo() As Integer
codigo = mcodigo
End Property
Property Get tipo() As Integer
tipo = mtipo
End Property
Property Get nombre1() As String
nombre1 = mnombre1
End Property
Property Get nombre2() As String
nombre2 = mnombre2
End Property
Property Get apellido1() As String
apellido1 = mapellido1
End Property
Property Get apellido2() As String
apellido2 = mapellido2
End Property
Property Get contrasena() As String
contrasena = mcontrasena
End Property
Property Get direccion() As String
direccion = mDireccion
End Property
Private Sub Class_Initialize()
Set MiConexion = New ADODB.Connection
Set MisDatos = New ADODB.Recordset
Set MisDatosAux = New ADODB.Recordset
MiConexion.ConnectionString = RutaConexion
MiConexion.Open RutaConexion
MisDatos.CursorType = adOpenDynamic
MisDatos.Open "Select * from Personal order by Apellido1", MiConexion, , , adCmdText
MisDatos.MoveFirst
LlenarDatos
End Sub
Private Sub Class_Terminate()
MisDatos.Close
MiConexion.Close
End Sub
Private Sub LlenarDatos()
With MisDatos
mcodigo = !codigo
mtipo = !tipo
mnombre1 = !nombre1
mnombre2 = !nombre2
mapellido1 = !apellido1
mapellido2 = !apellido2
mcontrasena = !contrasena
mDireccion = !direccion
End With
End Sub
Public Sub Nuevo(tipo As Integer, nombre1 As String, nombre2 As String, apellido1 As String, _
apellido2 As String, contrasena As String, direccion As String)
Dim c As Integer
MisDatosAux.CursorType = adOpenDynamic
MisDatosAux.Open "select Codigo from Personal order by Codigo", MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
c = 1
Else
MisDatosAux.MoveLast
c = MisDatosAux!codigo + 1
End If
MisDatosAux.Close
MiConexion.Execute "Insert into Personal (codigo,tipo,nombre1,nombre2,apellido1," _
& "apellido2,contrasena,direccion) " _
& "values (" & c & "," & tipo & ",'" & nombre1 & "','" & nombre2 & "'," _
& "'" & apellido1 & "','" & apellido2 & "','" & contrasena & "'," _
& "'" & direccion & "')"
MisDatos.Close
MisDatos.Open "select * from Personal order by Apellido1", MiConexion, , , adCmdText
LlenarDatos
End Sub
Public Sub Actualiza(codigo As Integer, tipo As Integer, nombre1 As String, nombre2 As String, apellido1 As String, _
apellido2 As String, contrasena As String, direccion As String)
MiConexion.Execute "Update Personal set tipo=" & tipo & ",Nombre1 ='" & nombre1 & "'," _
& "Nombre2='" & nombre2 & "',Apellido1='" & apellido1 & "'," _
& "Apellido2='" & apellido2 & "',contrasena='" & contrasena & "',Direccion='" & direccion & "' " _
& "where Codigo = " & codigo & ""
MisDatos.Close
MisDatos.Open "select * from Personal order by Apellido1", MiConexion, , , adCmdText
LlenarDatos
End Sub
Public Function BuscaCodigo(codigo As Integer) As Boolean
sql = "select * from personal where codigo = " & codigo & ""
MisDatosAux.Open sql, MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
BuscaCodigo = False
Else
With MisDatosAux
mcodigo = !codigo
mtipo = !tipo
mnombre1 = !nombre1
mnombre2 = !nombre2
mapellido1 = !apellido1
mapellido2 = !apellido2
mcontrasena = !contrasena
mDireccion = !direccion
End With
BuscaCodigo = True
End If
MisDatosAux.Close
End Function
Public Function BuscaRepetido(nombre1 As String, nombre2 As String, apellido1 As String, apellido2 As String) As Integer
sql = "select * from Personal where nombre1 = '" & nombre1 & "'" _
& " and nombre2 = '" & nombre2 & "' and apellido1 = " _
& "'" & apellido1 & "' and apellido2 = '" & apellido2 & "'"
MisDatosAux.Open sql, MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
BuscaRepetido = 0
Else
BuscaRepetido = MisDatosAux!codigo
End If
MisDatosAux.Close
End Function
Public Function ClaveRepetido(clave As String) As Boolean
sql = "select * from Personal where contrasena= '" & clave & "'"
MisDatosAux.Open sql, MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
ClaveRepetido = False
Else
With MisDatosAux
mcodigo = !codigo
mtipo = !tipo
mnombre1 = !nombre1
mnombre2 = !nombre2
mapellido1 = !apellido1
mapellido2 = !apellido2
mcontrasena = !contrasena
mDireccion = !direccion
End With
ClaveRepetido = True
End If
MisDatosAux.Close
End Function
Public Sub Borrar(codigo As Integer)
On Error Resume Next
MiConexion.Execute "Delete from personal where Codigo = " & codigo & ""
End Sub
Public Sub Primero()
If MisDatos.BOF = False Then
MisDatos.MoveFirst
LlenarDatos
End If
End Sub
Public Sub Ultimo()
If MisDatos.EOF = False Then
MisDatos.MoveLast
LlenarDatos
End If
End Sub
Public Sub Anterior()
MisDatos.MovePrevious
If MisDatos.BOF = False Then
LlenarDatos
Else
MisDatos.MoveFirst
End If
End Sub
Public Sub Siguiente()
MisDatos.MoveNext
If MisDatos.EOF = False Then
LlenarDatos
Else
MisDatos.MoveLast
End If
End Sub
Public Sub Busqueda(LstResultados As ListBox, nombre1 As String, nombre2 As String, apellido1 As String, apellido2 As String, direccion As String, tipo As Integer, Optional Asignaciones As Boolean)
Dim ColocaY As Boolean
Dim j As Integer
LstResultados.Clear
ColocaY = False
sql = "Select Codigo,Nombre1,Nombre2,Apellido1,Apellido2 from Personal where"
If nombre1 <> "" Then
sql = sql + " nombre1 like '" & nombre1 & "%'"
ColocaY = True
End If
If nombre2 <> "" Then
If ColocaY = True Then
sql = sql + " and"
End If
sql = sql + " nombre2 like '" & nombre2 & "%'"
ColocaY = True
End If
If apellido1 <> "" Then
If ColocaY = True Then
sql = sql + " and"
End If
sql = sql + " apellido1 like '" & apellido1 & "%'"
ColocaY = True
End If
If apellido2 <> "" Then
If ColocaY = True Then
sql = sql + " and"
End If
sql = sql + " apellido2 like '" & apellido2 & "%'"
ColocaY = True
End If
If direccion <> "" Then
If ColocaY = True Then
sql = sql + " and"
End If
sql = sql + " direccion like '" & direccion & "%'"
ColocaY = True
End If
If tipo <> -1 Then
If ColocaY = True Then
sql = sql + " and"
End If
sql = sql + " tipo = " & tipo & ""
ColocaY = True
End If
If Mid(sql, Len(sql) – 4, 5) = "where" Then
sql = Mid(sql, 1, Len(sql) – 4)
End If
sql = sql + " order by Apellido1,Apellido2,Nombre1,Nombre2"
MisDatosAux.CursorType = adOpenDynamic
MisDatosAux.Open sql, MiConexion, , , adCmdText
If MisDatosAux.EOF = False And MisDatosAux.BOF = False Then
LstResultados.Enabled = True
Do Until MisDatosAux.EOF
LstResultados.AddItem MisDatosAux!nombre1 + " " + _
MisDatosAux!nombre2 + " " + _
MisDatosAux!apellido1 + " " + _
MisDatosAux!apellido2
LstResultados.ItemData(LstResultados.NewIndex) = MisDatosAux!codigo
MisDatosAux.MoveNext
Loop
Else
LstResultados.Enabled = False
LstResultados.AddItem "NO HAY REGISTROS"
End If
MisDatosAux.Close
If Asignaciones = True Then
If LstResultados.Enabled = True Then
For j = 0 To LstResultados.ListCount – 1
sql = "SELECT Asignaciones.cod_empleado, Turnos.nombre " _
& "FROM Turnos INNER JOIN Asignaciones ON Turnos.codigo = Asignaciones.cod_turno " _
& "WHERE (((Asignaciones.cod_empleado)=" & LstResultados.ItemData(j) & "))"
MisDatosAux.CursorType = adOpenDynamic
MisDatosAux.Open sql, MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
LstResultados.List(j) = LstResultados.List(j) + " *** NO ASIGNADO ***"
Else
MisDatosAux.MoveFirst
LstResultados.List(j) = LstResultados.List(j) + " /"
While MisDatosAux.EOF = False
LstResultados.List(j) = LstResultados.List(j) + " " + MisDatosAux!nombre
MisDatosAux.MoveNext
Wend
LstResultados.List(j) = LstResultados.List(j) + " "
End If
MisDatosAux.Close
Next j
End If
End If
End Sub
Public Sub CRBusqueda(codigo As Integer)
MisDatos.MoveFirst
While (MisDatos!codigo <> codigo) And MisDatos.EOF = False
MisDatos.MoveNext
Wend
LlenarDatos
End Sub
BD_Turnos:
Option Explicit
Private MisDatos As ADODB.Recordset
Private MisDatosAux As ADODB.Recordset
Private MiConexion As ADODB.Connection
Private sql As String
Private mcodigo As Integer
Private mnombre As String
Private mhorad1 As Integer
Private mminutod1 As Integer
Private mtoled1 As Integer
Private mhorah1 As Integer
Private mminutoh1 As Integer
Private mtoleh1 As Integer
Property Get codigo() As Integer
codigo = mcodigo
End Property
Property Get nombre() As String
nombre = mnombre
End Property
Property Get Turno1() As String
Turno1 = ""
If mhorad1 < 10 Then Turno1 = "0"
Turno1 = Turno1 + CStr(mhorad1) + ":"
If mminutod1 < 10 Then Turno1 = Turno1 + "0"
Turno1 = Turno1 + CStr(mminutod1) + " +/- "
If mtoled1 < 10 Then Turno1 = Turno1 + "0"
Turno1 = Turno1 + CStr(mtoled1) + " a "
If mhorah1 < 10 Then Turno1 = Turno1 + "0"
Turno1 = Turno1 + CStr(mhorah1) + ":"
If mminutoh1 < 10 Then Turno1 = Turno1 + "0"
Turno1 = Turno1 + CStr(mminutoh1) + " +/- "
If mtoleh1 < 10 Then Turno1 = Turno1 + "0"
Turno1 = Turno1 + CStr(mtoleh1)
End Property
Private Sub Class_Initialize()
Set MiConexion = New ADODB.Connection
Set MisDatos = New ADODB.Recordset
Set MisDatosAux = New ADODB.Recordset
MiConexion.ConnectionString = RutaConexion
MiConexion.Open RutaConexion
MisDatos.CursorType = adOpenDynamic
MisDatos.Open "Select * from Turnos order by nombre", MiConexion, , , adCmdText
If MisDatos.EOF = True And MisDatos.BOF = True Then
mcodigo = 0
Else
MisDatos.MoveFirst
LlenarDatos
End If
End Sub
Private Sub Class_Terminate()
MisDatos.Close
MiConexion.Close
End Sub
Private Sub LlenarDatos()
With MisDatos
mcodigo = !codigo
mnombre = !nombre
mhorad1 = !horad1
mminutod1 = !minutod1
mtoled1 = !toled1
mhorah1 = !horah1
mminutoh1 = !minutoh1
mtoleh1 = !toleh1
End With
End Sub
Public Sub Nuevo(nombre As String, Turno1 As String)
Dim T(6) As Integer
Dim c As Integer
Dim k As Integer
Dim P As Integer
Dim e As Boolean
MisDatosAux.CursorType = adOpenDynamic
MisDatosAux.Open "select Codigo from turnos order by codigo", MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
c = 1
Else
MisDatosAux.MoveLast
c = MisDatosAux!codigo + 1
End If
MisDatosAux.Close
P = 1
For k = 0 To 1
T(k * 3) = Val(Mid(Turno1, P, 2))
T((k * 3) + 1) = Val(Mid(Turno1, P + 3, 2))
T((k * 3) + 2) = Val(Mid(Turno1, P + 10, 2))
P = 16
Next k
MiConexion.Execute "Insert into Turnos (codigo,nombre," _
& "horad1,minutod1,toled1,horah1,minutoh1,toleh1) " _
& "values (" & c & ",'" & nombre & "'," _
& "" & T(0) & "," & T(1) & "," & T(2) & "," _
& "" & T(3) & "," & T(4) & "," & T(5) & ")"
MisDatos.Close
MisDatos.Open "select * from Turnos order by nombre", MiConexion, , , adCmdText
MisDatos.MoveFirst
e = False
While e = False
If MisDatos!codigo = c Then
e = True
Else
MisDatos.MoveNext
End If
Wend
LlenarDatos
End Sub
Public Sub Actualiza(codigo As Integer, nombre As String, Turno1 As String)
Dim T(6) As Integer
Dim c As Integer
Dim k As Integer
Dim P As Integer
Dim e As Boolean
P = 1
For k = 0 To 1
T((k * 3) + 0) = Val(Mid(Turno1, P, 2))
T((k * 3) + 1) = Val(Mid(Turno1, P + 3, 2))
T((k * 3) + 2) = Val(Mid(Turno1, P + 10, 2))
P = 16
Next k
MiConexion.Execute "Update Turnos set nombre ='" & nombre & "'," _
& "horad1=" & T(0) & ",minutod1=" & T(1) & ",toled1=" & T(2) & "," _
& "horah1=" & T(3) & ",minutoh1=" & T(4) & ",toleh1=" & T(5) & " " _
& "where codigo = " & codigo & ""
MisDatos.Close
MisDatos.Open "select * from Turnos order by nombre", MiConexion, , , adCmdText
MisDatos.MoveFirst
e = False
While MisDatos!codigo <> codigo
MisDatos.MoveNext
Wend
LlenarDatos
End Sub
Public Function BuscaCodigo(codigo As Integer) As Boolean
Dim e As Boolean
sql = "select * from Turnos where codigo = " & codigo & ""
MisDatosAux.CursorType = adOpenDynamic
MisDatosAux.Open sql, MiConexion, , , adCmdText
If MisDatosAux.EOF = True And MisDatosAux.BOF = True Then
BuscaCodigo = False
Else
MisDatos.MoveFirst
e = False
While e = False
If MisDatos!codigo = codigo Then
e = True
Else
MisDatos.MoveNext
End If
Wend
LlenarDatos
BuscaCodigo = True
End If
MisDatosAux.Close
End Function
Public Function LLenarLista(lista As ListBox) As Boolean
sql = "select * from Turnos order by nombre"
MisDatosAux.CursorType = adOpenDynamic
MisDatosAux.Open sql, MiConexion, , , adCmdText
lista.Clear
lista.Enabled = True
If Not (MisDatosAux.EOF = True And MisDatosAux.BOF = True) = True Then
MisDatosAux.MoveFirst
While MisDatosAux.EOF = False
lista.AddItem MisDatosAux!nombre
lista.ItemData(lista.NewIndex) = MisDatosAux!codigo
MisDatosAux.MoveNext
Wend
LLenarLista = True
Else
lista.AddItem "NO HAY REGISTROS"
lista.Enabled = False
mcodigo = 0
LLenarLista = False
End If
MisDatosAux.Close
End Function
Public Sub Borrar(codigo As Integer)
On Error Resume Next
MiConexion.Execute "Delete from Turnos where Codigo = " & codigo & ""
MisDatos.Close
MisDatos.Open "Select * from turnos order by nombre", MiConexion, , , adCmdText
If MisDatos.EOF = True And MisDatos.BOF = True Then
mcodigo = 0
Else
MisDatos.MoveFirst
LlenarDatos
End If
End Sub
Public Sub Primero()
If MisDatos.BOF = False Then
MisDatos.MoveFirst
LlenarDatos
End If
End Sub
Public Sub Ultimo()
If MisDatos.EOF = False Then
MisDatos.MoveLast
LlenarDatos
End If
End Sub
Public Sub Anterior()
MisDatos.MovePrevious
If MisDatos.BOF = False Then
LlenarDatos
Else
MisDatos.MoveFirst
End If
End Sub
Public Sub Siguiente()
MisDatos.MoveNext
If MisDatos.EOF = False Then
LlenarDatos
Else
MisDatos.MoveLast
LlenarDatos
End If
End Sub
Enviado por:
Ing.+Lic. Yunior Andrés Castillo S.
"NO A LA CULTURA DEL SECRETO, SI A LA LIBERTAD DE INFORMACION"®
www.monografias.com/usuario/perfiles/ing_lic_yunior_andra_s_castillo_s/monografias
Santiago de los Caballeros,
República Dominicana,
2015.
"DIOS, JUAN PABLO DUARTE Y JUAN BOSCH – POR SIEMPRE"®
Página anterior | Volver al principio del trabajo | Página siguiente |