Código fuente de Vbaccess
1) Importancia del sistema
Con la creciente popularidad de las aplicaciones informáticas, las empresas e instituciones realizado La gestión de personal estandarizada y automatizada por computadora es imperativa. Este es un medio importante para mejorar el nivel de gestión científica y una forma confiable de mejorar la eficiencia del trabajo.
2) Características del sistema
1 realiza la gestión automática de la información del personal;
2. Proporciona varias funciones para consultar, modificar, eliminar e insertar información de talentos;
Proporciona varias funciones de estadísticas de información.
3) Entorno de diseño del sistema
1 Windows 2000 Server o Windows XP
2 Sistema de gestión de bases de datos SQL Server 2000
3; VB 6.0.
2. Análisis de requisitos del sistema
1) Objetivos del diseño del sistema
1 Realizar la gestión automatizada de la información en el proceso de gestión de personal.
2. Puede modificar, eliminar e insertar información diversa.
3. Realizar la consulta y estadística de diversos tipos de información.
4 Estadísticas de información de asistencia de los empleados por año y mes.
5 Con base en las estadísticas de un determinado año, un determinado mes y un determinado día, consulta el número de personas que llegan tarde y salen temprano en un determinado departamento.
6. Cuente los días extras de todos mensualmente.
7. Estadísticas sobre el número de personas trasladadas de entrada y salida por año.
2) Análisis de requisitos del sistema
1. Análisis de requisitos de información
A través del análisis del sistema de información del personal, este sistema necesita contener la siguiente información (datos). diccionario):
1) Información básica de expedientes de personal:
No., nombre, sexo, fecha de nacimiento, años de servicio, número de teléfono, dirección, correo electrónico, educación, especialidad , tiempo de empleo (requisitos numéricos: longitud 6 bits).
2) Información de transferencia de personal:
Departamento original, nuevo departamento, puesto original, nuevo puesto, hora de salida, hora de entrada.
3) Información de asistencia del personal:
Hora de inicio y salida del trabajo, hora de retraso, hora de salida anticipada, número de días de licencia, número de días de horas extras y fecha de horas extras.
4) Información de administración de usuarios del sistema:
Número de cuenta de usuario, contraseña (compuesta por 6 dígitos), registre la información del último inicio de sesión del usuario: año, mes y día.
2. Análisis de requisitos funcionales
1) Ingreso, actualización, eliminación y consulta de información básica de expedientes de personal
2) Ingreso y actualización de traslados de personal; información, eliminar y consultar;
3) Ingresar, actualizar, eliminar y consultar información de asistencia del personal;
3. Diseño de la estructura conceptual
El diagrama E-R del El sistema es como se muestra en la figura Como se muestra en 1.1:
1) Diseño de base de datos
1 Diseño de estructura lógica
Información básica del personal (número, nombre, fecha de nacimiento, experiencia laboral, número de teléfono, dirección de correo electrónico, calificaciones académicas, fecha de incorporación);
Información de transferencia de personal (número, departamento original, nuevo departamento, puesto original, nuevo puesto, tiempo de transferencia, tiempo de transferencia );
Información de asistencia del personal (número de personas, tiempo de desplazamiento, llegada tardía, salida anticipada, número de días de vacaciones, número de días de horas extras, fecha de horas extras).
2 La estructura de cada tabla de datos
Según el análisis de demanda del modelo E-R entre entidades, este sistema requiere cuatro tablas de datos para almacenar información básica de personal, información de transferencias, información de asistencia. y sistema respectivamente, información de la cuenta del administrador, de la siguiente manera:
Tabla de información básica del personal
Instrucciones sobre si la longitud del tipo de datos del nombre del campo está vacía.
Bh char 10 no es un número nulo
Nombre varchar 8 no es un nombre nulo
Género varChar 3 no es un género nulo
Gznx varchar 10 Año laboral nulo
Fecha de nacimiento hora 10 La fecha de nacimiento es nula
correo electrónico Varchar 20 Correo electrónico nulo
Dh Varchar 20 Teléfono nulo
Xl Varchar 10 educación nula
Jdwsj Datetime 10 null a unidad de tiempo
Tabla de transferencia de personal
Explicación de si la longitud del tipo de datos del campo el nombre es nulo.
Ybm varchar 12 departamento original no está vacío
Xbm varchar 12 nuevo departamento no está vacío
Yzw varChar 12 no está vacía posición original
Xzw varchar 12 vacío nuevo trabajo
Dcsj fecha hora 10 tiempo de salida del aire acondicionado
Drsj fecha hora 10 tiempo de entrada del aire acondicionado
Horario de personal
Explicación de si la longitud del tipo de datos del nombre del campo está vacía.
Sxb varchar 10 tiempo de viaje no nulo
Cd varchar 5 tiempo de retraso no nulo
Zt varChar 5 no nulo tiempo de salida anticipada
Qj varchar 5 días de vacaciones nulos
Jbts fecha hora 5 días de horas extra nulas
Jbrq fecha hora 10 fecha de horas extra nulas
Tabla de administradores
Explicación de si la longitud del tipo de datos del nombre del campo está vacía.
Nombre char 20 Nombre de usuario no nulo
Contraseña carácter 8 no es nulo Contraseña
Código del módulo de información básica del personal
Opción explícita
Dim mblchange es un valor booleano
TxtSQL público en forma de cadena
Texto de mensaje público en forma de cadena
Dim mrc es ADODB. Conjunto de registros
Sub privado cmdcancle_Click()
Eliminarme
Conector final
Sub privado cmdOK_Click()
Dim intCount como entero
Dim txtSQL como cadena
Dim MsgString como cadena
Dim sMeg como cadena
La anotación I es un número entero
Para intCount = 0 a 1
si Trim(text 1(int count)&" ")= ""Entonces
Seleccione mayúsculas y minúsculas
Caso 0
SMeg = "Número"
Caso 1
SMeg = "Nombre"
Finalizar selección p>
sMeg = sMeg & amp "no puede ser nulo"
Msgbox smeg, vbokonly+vbexclusion, "advertencia"
Text1(intCount).
SetFocus
Salir del conector
Finalizar si...
Siguiente intCount
if Trim(text 1(3)& amp; " ")= " "Entonces
MsgBox "La fecha de nacimiento no puede estar vacía", ejemplo vbOKOnly+VB, "Advertencia"
Terminará si...
if Trim(text 1(3)&" ")& lt& gt""Entonces
Si no es IsDate(Text1(3)), entonces
MsgBox " La fecha de nacimiento debe Sí (aaaa-mm-dd) ", vbOKOnly+vbaclouse, "Advertencia"
Texto1(3). SetFocus
Conector de salida
Otro
texto 1(3)= Formato(texto 1(3), "aaaa-mm-dd")
Terminará si...
Terminará si...
if Trim(text 1(2)& amp; " ") = " "Entonces
MsgBox "La edad no puede ser nula", vbOKOnly+vbaclouse, "Advertencia"
Salir del conector
Terminará si...
Si gintMode = 1, entonces
txt SQL = " select * from dangan donde ygid = ' " & trim(text 1(0))&"
Establecer mrc = ExecuteSQL( txtSQL , msgtext)
Si mrc.eof = false entonces
MsgBox "Registro duplicado", vbOKOnly+vbaclouse, "Advertencia"
SetFocus1(0).
Fin si...
mrc.Close
txt SQL = " eliminar * de dangan donde ygid = ' " & trim(texto 1( 0) )&"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
txtSQL = "select * from dangan "
Establecer mrc = ExecuteSQL( txtSQL, msgtext )
mrc. Añadir nuevo contenido
Para intCount = 0 a 1
mrc. campos(int count) = Trim(text 1(int count))
Siguiente intCount
Para intCount = 2 a 5
mrc. campos(int count) = Trim(text 1(int count))
Siguiente intCount
Para intCount = 6 a 10
mrc. campos(int count) = Trim(text 1(int count))
Siguiente intCount
mrc. Campo(11) = Recortar(combo 1. Texto)
mrc. Actualizar
Si gintMode = 1, entonces
MsgBox "Registro agregado exitosamente", vbOKOnly, "Preguntar"
Para i = 0 a 10
Texto1(i). Text = " "
Siguiente yo
frmyuangong. Mostrar
frmyuangong.
zord0
frmmanrecord. Título del programa
frmmanrecord. Mostrar datos
frmmanrecord. Zod 1
Terminará si...
Entonces ElseIf gintMode = 2
txt SQL = " select * from dangan donde ygid = ' " & amp ; Recortar(Texto1(0)). text) & amp"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
Para intCount = 0 a 10
mrc.fields(int count) = Trim (texto 1(int count))
siguiente intCount
mrc.field(11) = Trim(combo 1. text)
mrc.
MsgBox "Modificación exitosa", vbOKOnly, "Preguntar"
Eliminarme
frmmanrecord Mostrar título
frmmanrecord Mostrar datos
frmmanrecord.zord0
Terminará si
gintMode = 0
Finalizar conector
Private Subform_Load()
Dim msgtext como cadena
Dim intCount como entero
Usando Combo1
AddItem "Male"
AddItem "Female"
Termina con
Si gintMode = 1, entonces
Caption = i. "Agregar"
Entonces ElseIf gintMode = 2
p>Establezca mrc = ExecuteSQL(txtSQL, msgtext)
si mrc.EOF = false entonces
use mrc
para intCount = 0 a 10
Text1(intCount) = . >
Siguiente intCount
Si no es IsNull(!) entonces
Combo1 =!
Terminará si...
mrc.Close
i.Caption = "Modificar"
Termina si...
Fin if...
mblchange = False
Conector final
Opción explícita
Cadena pública de sQSql
Mrc público como ADODB.
TxtSQL público como cadena
Texto de mensaje público como cadena
Subcomprobación privada 1_Click (índice como número entero)
Texto1(índice). SetFocus
Terminará si...
Si índice = 1, entonces
Texto1(índice). SetFocus
Otro
Texto1 (índice). SetFocus
Terminará si...
Finalizar conector
Subcomando privado cancel_click()
Eliminarme
p>Conector final
Sub cmdOK_Click() privado
Si marca 1(0).
Valor = vbChecked Entonces
sQSql = " ygname = ' " & amptrim(text 1(0)& amp;"& amp"
Terminará si...
Si Check1(1). Valor = vbChecked Entonces
Si trim(sQSql & amp" ") = " "Entonces
sQSql = " ygid = ' " & ampTrim. (Text1 (1)"& amp"
Otro
sQSql = sQSql & amp and ygid = ' " & ampTrim(Text1(1)"& amp"
Terminará si...
Terminará si...
Si Valor = vbChecked Entonces
Si trim(sQSql & amp" " ). = " "Entonces
sQSql = " ygdept = ' " & amptrim(texto 1(2)& amp;"& amp"
Otro
sQSql = sQSql & amp y ygdept = ' " &trim(text 1(2)& amp;"& amp"
Terminará si...
Terminará si. ..
Si trim(sQSql & amp" ") = " "entonces
frmmanrecord =" select * from dangan "
flagEdit = True<. /p>
frmmanrecord.Título del programa
frmmanrecord. Mostrar datos
Otros
frmmanrecord = " select * from dangan where " & amp; SQL SQL
flagEdit = True
frmmanrecord.Título del programa
frmmanrecord.Show data
frmmanrecord.Show
Finalizar si...
Ocultar
Conector final
Subform_Load privado()
Etiquetar I como un número entero
Para i = 0 a 2
Texto1(i) = " "
Luego
finalizar Conector
Módulo de asistencia de personal código
Opción explícita
Dim mblchange es un valor booleano
Dim mrc es ADODB. Conjunto de registros
TxtSQL público como cadena
Sub cboItem_Click privado (indexado como entero)
Dim msgtext como cadena
txtSQL = "select ygid , yg nombre de dangan donde yg dept = ' " & Trim(DataCombo1)"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
MoveFirst
mrc.Move cboItem(1).
Índice de lista
txtid = Trim(mrc!ygid)
Conector final
privado Sub cboItem _ KeyDown(El índice es un número entero, KeyCode es un número entero, Shift es un número entero)
Ingrese la clave de la etiqueta
Conector final
Private Sub cboMonth_Click()
Atenuar dateTemp como fecha
dateTemp = DateAdd("d ",-1,DateAdd("m ",1,DateSerial(CInt(cboYear),CInt(cboMonth),1)))
txtItem(0) = Día( dateTemp)
Conector final
Private Sub cboYear_Click()
Atenuar dateTemp como fecha
si se recorta (CBO mes y amp ;" ")& lt& gt""Entonces
dateTemp = DateAdd("d ",-1,DateAdd("m ",1,DateSerial(CInt(cboYear),CInt(cboMonth),1) ))
txtItem(0) = Día(dateTemp)
Terminará si...
Finalizar conector
Sub privado cmdExit_Click()
Si mblchange y gintMode & lt& gt3 y cmdSave. Luego habilite
Si MsgBox("¿Guardar cambios en el registro actual?", vbOK cancelar+signo de exclamación VB, "advertencia") = vbOK Entonces
Llame a cmdSave_Click
Se acabaría si...
Se acabaría si...
Eliminarme
Conector final
Privado Sub cmdSave_Click() p>
Atenuar intCount como un número entero
Atenuar sMeg como una cadena
Atenuar rectemp como un conjunto de registros
Anotar sSql como una cadena
Atenuar el texto del mensaje como cadena
Para intCount = 0 a 3
Si Trim(txtItem(intCount) y amp" ") = " "Entonces
Seleccione caso intCount
Caso 0
SMeg = "Días de este mes"
Caso 2
SMeg = "Días de asistencia"
Caso 3
SMeg = "Asistencia"
Finalizar selección
Si intCount & lt& gt entonces 1
sMeg = sMeg & amp "¡No puede ser nulo!"
Msgbox smeg, vbokonly+vbexclusion, "Advertencia"
txtItem(intCount). SetFocus
Salir del conector
Finalizar si...
Finalizar si...
Siguiente intCount
Si gintMode = 1, entonces
txt SQL = " select * from check in donde kqid = ' " & trim(txtid) & kqdate = ' " & format(cboYear.text &-“&cboMonth.
text&-01","yyyy-mm-DD")&"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
Si mrc. EOF = False then
MsgBox "¡El registro de asistencia del empleado para este mes ya existe!", vbOKOnly+vbaclouse, "Advertencia"
cboMonth. SetFocus
Conector de salida
Termina si...
mrc. Cerrar
txtSQL = " eliminar del registro donde kqid = ' " & trim(txtid) & kqdate = ' " & format(cboYear & - "& cboMonth & -01 "," yyyy-mm-DD ")&"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
txtSQL = "select * from checkin"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
mrc. Añadir nuevo
mrc. Campo(0) = Recortar(txtid)
mrc. campos(1)= Trim(cboItem(1))
mrc. campos(2) = Formato(cboAño & "-" & cboMes & "-01", "aaaa-mm-dd")
Para intCount = 0 a 15
mrc. campos(int count+3) = Trim(tx titem(int count). text)
Siguiente intCount
Para intCount = 16 a 17
mrc . campos(int count+3)= Trim(tx titem(int count). text)
Siguiente intCount
mrc. Actualizar
MsgBox "¡Registro agregado exitosamente!", vbOKOnly+vbaclouse, "Advertencia"
Para intCount = 0 a 17
txtItem(intCount) = " "
Siguiente intCount
mblchange = False
Entonces ElseIf gintMode = 2
txtSQL = "seleccione kqid, kqname, kqdays, kqrday, kqtday, kqwork, kqabsent, kqrest, kqleave, kqlate, kqearly, kqforget, kqover1, kqvoer2, kqfill, kqgo, kqpay, kqdeduct, kqother, kqre marca desde el registro donde kqid = ' " & trim(txtid)& ;"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
mrc.fields(0) = Trim(txtid)
mrc.fields(1)= Trim(cboItem) (1))
Para intCount = 0 a 15
mrc.fields(int count+2) = Trim(tx titem(int count).
Texto)
Siguiente intCount
Para intCount = 16 a 17
mrc. campos(int count+2)= Trim(tx titem(int count). text)
Siguiente intCount
mrc. Actualizar
MsgBox "¡Registro modificado correctamente!", vbOKOnly, "Preguntar"
mrc. Cerrar
Eliminarme
frmCheck. Título del programa
frmCheck. Mostrar datos
frmCheck. Zod 0
Terminará si...
gintMode = 0
Finalizar conjunto
Combo privado de subdatos 1 _ Click(área como un número entero)
Anotar sSql como una cadena
Atenuar el texto del mensaje como una cadena
txtSQL = "seleccione ygid, nombre de yg de dangan donde yg dept = ' "& Trim(DataCombo1)"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
cboItem(1) clear
Si no es mrc, entonces EOF
. p>use cboItem(1)
en lugar de mrc. fin de archivo
elemento adicional trim(mrc!ygname)
mrc. .Siguiente
Anillo
.ListIndex = 0
termina en...
cmdSave
Otro
MsgBox "¡Primero cree un perfil de empleado! ", vbOKOnly+vbaclouse, "advertencia"
cmdSave.enabled=false
Conector de salida
Terminará si...
end Connector
Private subform_Load()
Atenuar intCount como entero
Atenuar dateTemp como fecha
Atenuar msgtext como cadena
Adodc1.Visible=False
cboYear(ahora)
AddItemYear(ahora)-1
cboYear ListIndex = 0
cboMonth. AddItem intCount
Siguiente intCount
cboMonth( ahora)
Si gintMode = 1, luego
i. Caption = "Agregar"
Inicializar el nombre del departamento
txtSQL = "Seleccionar un ygdept diferente de dangan "
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
Si mrc entonces EOF
MsgBox " ¡Primero registre los archivos de los empleados! ", vbOKOnly+vbaclouse, "advertencia"
cmdSave.enabled=false
Conector de salida
Terminará si...
Inicialización El número de días de este mes.
dateTemp = DateAdd("d ",-1,DateAdd("m ",1,DateSerial(CInt(cboYear),CInt(cboMonth),1)))
txtItem (0) = Día(fechaTemp)
mrc. Cerrar
Entonces ElseIf gintMode = 2
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
Si mrc. EOF = false entonces
Utilice mrc
cboItem(1). Agregar elemento. Campo(1)
cboItem(1). ListIndex = 0
Para intCount = 2 a 19
Si no es IsNull(.Fields(intCount)) entonces
txtItem(intCount - 2) = . Campo (entero)
Fin si...
Siguiente intCount
txtid =. Campo(0)
Termina con...
Termina si...
mrc. Ciérrame
. Título=yo. Títulos y títulos. "Modificar"
Terminará si...
mblchange = False
Finalizar conector
Código del módulo de transferencia de personal
Opción explícita
Dim mblchange es booleano
TxtSQL público en forma de cadena
Texto de mensaje público en forma de cadena
Dim mrc para ADOB. conjunto de registros
Atenuar mis marcadores a variante
Subcomando privado cancel_click()
Desmontarme
Finalizar conector
Sub privado cmdchange_Click()
cmdchange. enable=false
Comando 1. enable=false
cmddelete. Habilitar = Falso
gintMode = 2
Conector final
Sub privado cmddelete_Click()
Atenuar como cadena
mimarcador = mrc. Marcador
St = MsgBox("¿Eliminar registro actual?", vbOKCancel, "Preguntar")
Si st = vbOK, entonces
mrc. Siguiente
Si mrc. Luego EOF
mrc. MoveFirst
mimarcador = mrc. Marcadores
mrc. MoverÚltimo
mrc. eliminar
mimarcador = mrc. Marcador
Datos de vista de llamada
Otro
mimarcador = mrc. Marcadores
mrc. Mover anterior
mrc. Eliminar
mrc. Marcadores = mis favoritos
Datos de visualización de llamadas
Terminará si...
Otro
mrc.
Marcadores = mis favoritos
Datos de visualización de llamadas
Terminará si...
Finalizar conector
Sub cmdOK_Click() privado p> p>
Atenuar intCount como entero
Atenuar txtSQL como cadena
Atenuar MsgString como cadena
Si Texto(0) = ", entonces
MsgBox "¡El número no puede estar vacío! ", vbOKOnly+vbaclouse, "Advertencia"
Text(0).SetFocus
Terminará si...
Si Text(1) = ", luego
MsgBox "¡El evento no puede estar vacío!, vbOKOnly+vbaclouse, "Advertencia"
Texto (1). SetFocus
Terminará si...
Si gintMode = 1, entonces
txtSQL = " select * from renshi 1 donde id = ' " & trim(Text(0))&"
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
Si mrc. EOF = False then
MsgBox "El registro con este número ya existe, ¡vuelve a ingresar!", vbOKOnly+vbaclouse, "Advertencia"
Texto (0). SetFocus
Conector de salida
Termina si...
mrc. Cerrar
txtSQL = " eliminar * de renshi 1 donde id = ' " & trim(Text(0))&"
Establecer mrc = ExecuteSQL(txtSQL, msgtext )
txt SQL = " select * from renshi 1 "
Establecer mrc = ExecuteSQL(txtSQL, msgtext)
Agregar nuevo contenido
Para intCount = 0 a 2
mrc.fields(int count) = Trim(Text(int count))
Siguiente intCount
mrc .Update
MsgBox "¡Registro agregado exitosamente! ", vbOKOnly, "mensaje"
frmrenshi.zord1
frmrenshi.display
command1.enable=true
cmdchange .enabled= Verdadero
cmddelete.enabled=Verdadero
primero habilitado=Verdadero
siguiente habilitado=Verdadero
Finalmente habilitado=Verdadero
p>
Finalizar si
Si gintMode = 2, entonces
txt SQL = " select * from renshi 1 "
Establecer mrc = ExecuteSQL(txtSQL , msgtext)
Para intCount = 0 a 2
mrc = .Text(intCount). Texto
Siguiente intCount
mrc. Actualizar
MsgBox "¡Registro modificado exitosamente! ", vbOKOnly, "mensaje"
cmdchange. enable=True
Comando 1. enable=True
cmddelete.
enable = true
Finalizar si...
gintMode = 0
Finalizar conector
Subcomando privado 1_Click()
Etiquete I como un número entero
Para i = 0 a 2
Texto (1). text = " "
Siguiente I
Comando 1. habilitado=falso
cmdchange. enable=false
cmddelete. enable=false
Primero. enable=false
Anterior. habilitado=falso
siguiente1. enable=false
Finalmente. enable = false
gintMode = 1
End-joiner
Private Sub first_Click()
mrc. MoveFirst
Datos de vista de llamada
Conector final
Subform_Load privado()
Atenuar txtSQL como cadena
Atenuar msgtext como cadena
Marcar I como un número entero
txt SQL = " select * from renshi 1 "
Establecer mrc = ExecuteSQL( txtSQL, msgtext)
Si mrc. Entonces EOF = True
MsgBox "Sin registro, ¡agregue!", vbOKOnly, "Preguntar"
Otro
mrc. MoveFirst
Datos de visualización de llamadas
mybookmark = mrc. Marcador
mblchange = True
Terminará si...
mblchange = True
Finalizar conector
Sub privado next1_Click()
mrc. Siguiente
Si mrc. Luego EOF
mrc. MoveFirst
Terminará si...
Llamar a los datos de visualización
Finalizar conector
Sub privado anterior_Click()
mrc. pasar al anterior
si mrc. Entonces BOF
mrc. MoveLast
Finalizará si...
Llamar datos de vista
Finalizar conector
Datos de subvista pública()
Atenuar intCount como entero
Para intCount = 0 a 2
Texto(intCount) = mrc. Campo (entero)
Siguiente intCount
Conector final