- Module Giúp đỡ:
3.4. Thiết kế giao diện của chơng trình
Giao diện chơng trình là nơi để ngời sử dụng giao tiếp với chơng trình, ch- ơng trình đợc xây dựng trên hệ quản trị cơ sở dữ liệu Visual Foxpro chạy trên nền Window là hệ điều hành có giao diện đồ hoạ rất thân thiện, một loại giao diện đang chiếm u thế hiện nay.
Chơng trình đợc xây dựng ở dạng menu, từ menu ngời sử dụng có thể sử dụng tất cả các chức năng của chơng trình.
Tìm kiếm dữ liệu Tìm thấy dữ liệu? K T Báo cáo Thông báo lỗi Thông báo
Màn hình cập nhật thông tin:
- Trớc khi đăng nhập vào chơng trình, bạn phải khai báo ngời sử dụng bằng cách khai báo tên ngời sử dụng và Password:
Hoặc có thể khai báo ngời sử dụng mới nhờ một Administrator. ở đây là Thanh. Administrator có thể thay đổi hay xoá user của bạn tuy nhiên không ai có thể xoá hay thay đổi đợc Administrator.
Sau đây là màn hình chính để cập nhật hồ sơ cán bộ, màn hình này đợc thiết kế làm 9 trang: Lý lịch, công tác, đào tạo, hợp đồng , gia cảnh, nớc ngoài, cấp sổ, sức khoẻ, đoàn thể.
Trang thứ nhất đề cập tới những thông cơ bản nhất của nhân sự nh họ tên, ngày sinh, chức vụ, giới tính…và nếu có ảnh (*bmp) thì có thể chèn vào bằng cách chọn ở command hình ảnh.
Các trang còn lại nh công tác, đào tạo, hợp đồng, gia cảnh, nớc ngoài, cấp sổ, sức khoẻ, đoàn thể đợc thiết kế tơng đối giống nhau với dữ liệu đợc lấy từ các form danh mục và khi thêm mới bạn có thê nhấp phải chuột sau đó nhấn nút thêm.
- Ta có thể xem lý lịch trích ngang của nhân viên bằng cách chọn theo yêu cầu, hoặc nếu không thì chơng trình sẽ hiện hồ sơ lý lịch đầy đủ của nhân viên toàn công ty
-Chơng trình còn cho phép bạn tìm kiếm nhanh một nhân viên trong công ty thông qua việc chọn các chỉ tiêu tìm kiếm:
Một phần rất quan trọng đối với một phần mềm đó là việc đa ra các báo cáo cho ngời sử dụng, bời vì đây la mục đích mà ngời sử dụng cần ở một phần mềm. ở đây chơng trình đợc thiết kế đi kèm với một form lựa chọn giúp cho việc báo cáo đợc linh động hơn và thiệt thực hơn đối với ngời sử dụng
Sau khi thực hiện lựa chọn ta đợc các thông tin ra nh sau
Cài đặt và chạy chơng trình
Yêu cầu cấu hình để cài đặt chơng trình Yêu cầu về phần cứng:
* Máy PC Intel Pentium III 300 MHz trở lên hoặc Celeron 300 MHz trở lên. * 64 MB RAM trở lên
* SVGA 4 MB trở lên *10 MB HDD còn trống
Yêu cầu về phần mềm:
* Hệ điều hành Visual Foxpro 6.0 trở lên
* Bộ phần mềm Microsoft Office từ phiên bản 2000 trở lên * Chơng trình VietKey2000
Hớng dẩn cài đặt và chạy chơng trình:
1. Khởi động máy tính
2. Cho đĩa CD có chứa chơng trình vào ổ CD-ROM 3. Chọn Start\Run
4. Gõ vào ô Open lệnh F:\QLNS\Setup và chọn OK
Sau đó chạy chơng trình bằng cách
1.Chọn Start\Progam\QLNS 2.Kích vào QLNS.
Kết luận
Tin học hoá quản lý quá trình áp dụng những thành tựu khoa học công nghệ thông tin vào các hoạt động quản lý với tốc độ cao và độ chính xác tối đa.
Cùng với xu hớng phát triển mạnh mẽ của công nghệ thông tin thì yêu cầu về nhân lực con ngời cũng ngày càng đợc xã hội đòi hỏi cao hơn cả về thể lực lẫn trí lực. Để có thể điều hành và quản lý tốt trong thời đại thông tin này, con ngời phải có đủ trình độ, kiến thức, tầm hiểu biết rông mới có thể nắm bắt và điều hành các hoạ động xử lý thông tin diễn ra hàng ngày. Đây chính là mục tiêu mà các nhà quản lý kinh tế đặt ra cho đội ngũ cán bộ công nhân viên của họ. Vì vậy các nhà quản lý cần phải có sự theo dõi, điều tra thờng xuyên về nguồn nhân lực mà mình đang sử dụng để từ đó có những kế hoạch bồi dỡng, nâng cao trình độ chuyên môn nghiệp vụ, tay nghề đáp ứng kịp thời cho sự tăng trởng của nền Kinh Tế Quốc Dân. Chơng trình này đợc xây dựng nhắm đáp ứng đợc phần nào nhu cầu đó.
Tuy nhiên do thời gian có hạn cộng với kiến thức còn ít ỏi, kinh nghiệm còn non nớt nên chơng trình không tránh khỏi những hạn chế. Em rất mong đợc sự góp ý của các thầy cô và các bạn để chơng trình hoàn thiện hơn.
Em xin chân thành cảm ơn.
Tài liệu tham khảo
1. Giáo trình Hệ thống thông tin quản lý
Trần Thị Song Minh, Trơng Văn Tú, NXB Thống Kê 2000 2. Cơ sở dữ liệu
Trần Công Uốn, NXB Thống Kê 2000 3. Những bài thựchành Visual Foxpro Đinh Xuân Lâm, NXB Thống Kê
4. Sử dụng và khai thác Microsoft Visual Foxpro 6.0 Nguyễn Ngọc Minh, NXB Giáo Dục
5. Quản trị nhân lực
Phụ lục Form Danh mục Form_load() public field1,field2,alias if type('path_thanh')='U' public path_thanh,codeprovince path_human=sys(5)+'\QLNS\thanh' codeprovince=[805] endif store 0 to this.nrec field1=[madv] field2=[tenbp] alias=[bophan] if !used('benhvien')
use &path_ thanh.\data\benhvien in 0 endif
if !used('bangcap')
use &path_ thanh.\data\bangcap in 0 endif
if !used('hedaotao')
use &path_ thanh.\data\hedaotao in 0 endif
if !used('bophan')
use &path_ thanh.\data\bophan in 0 endif
if !used('dantoc')
use &path_ thanh.\data\dantoc in 0 endif
if !used('hocvan')
use &path_ thanh.\data\hocvan in 0 endif
if !used('tongiao')
use &path_ thanh.\data\tongiao in 0 endif
if !used('ngoaingu')
use &path_ thanh.\data\ngoaingu in 0 endif
if !used('ctdaotao')
use &path_ thanh.\data\ctdaotao in 0 endif
if !used('quocgia')
use &path_ thanh.\data\quocgia in 0 endif
if !used('macv')
use &path_ thanh.\data\macv in 0 endif
Them_click()
if !thisform.chkdata() then return
endif
select max(&field1.) as _max from &alias. where !delete() into cursor abcd cMax=padl(alltrim(str(val(_max)+1)),len(_max),'0')
use in abcd
insert into &alias. (&field1) value (cMax) thisform.grid1.refresh thisform.grid1.column2.setfocus Sua_click() if messagebox([Đồng ý hủy?],36,_screen.caption)=6 delete in &alias. do case case !eof(alias) skip in &alias.
case !bof(alias) and eof(alias) skip -1 in &alias. endcase thisform.grid1.refresh thisform.grid1.setfocus endif Thoat_click() if !thisform.chkdata() then return endif Release thisform
Form nhân viên Form_load()
if set('Multilock')='OFF' Set multilock on Set Delete on Set Talk off Set safety off Set date french Set century on endif
if type('path_ thanh ')='U'
public path_ thanh,codeprovince
codeprovince=[805] endif
thisform.cdbf=sys(2023)+'\'+right(sys(2015),8)
store 0 to this.nrec,this.nrec1,this.nrec2,this.nrec3,this.nrec4,this.nrec5,this.nrec6,this.nrec7
if !used('btdtt')
use &path_ thanh.\data\btdtt in 0 endif
if !used('btdquan')
use &path_ thanh.\data\btdquan in 0 endif
if !used('btdpxa')
use &path_ thanh.\data\btdpxa in 0 endif
if !used('btdpxa')
use &path_ thanh.\data\btdpxa in 0 endif
if !used('heso')
use &path_ thanh.\data\heso in 0 endif
if !used('benhvien')
use &path_ thanh.\data\benhvien in 0 endif
if !used('bangcap')
use &path_ thanh.\data\bangcap in 0 endif
if !used('congviec')
use &path_ thanh.\data\congviec in 0 endif
if !used('hedaotao')
use &path_ thanh.\data\hedaotao in 0 endif
if !used('qtdaotao')
use &path_ thanh.\data\qtdaotao in 0 endif
if !used('bophan')
use &path_ thanh.\data\bophan in 0 endif
if !used('dantoc')
use &path_ thanh.\data\dantoc in 0 endif
if !used('hocvan')
use &path_ thanh.\data\hocvan in 0 endif
if !used('tongiao')
use &path_ thanh.\data\tongiao in 0 endif
use &path_ thanh.\data\ngoaingu in 0 endif
if !used('ctdaotao')
use &path_ thanh.\data\ctdaotao in 0 endif
if !used('giacanh')
use &path_ thanh.\data\giacanh in 0 endif
if !used('xuatcanh')
use &path_ thanh.\data\xuatcanh in 0 endif
if !used('quocgia')
use &path_ thanh.\data\quocgia in 0 endif
if !used('suckhoe')
use &path_ thanh.\data\suckhoe in 0 endif
if !used('mahd')
use &path_ thanh.\data\mahd in 0 endif
if !used('doituong')
use &path_ thanh.\data\doituong in 0 endif
if !used('xuatthan')
use &path_ thanh.\data\xuatthan in 0 endif
if !used('ktkl')
use &path_ thanh.\data\ktkl in 0 endif
if !used('hphi')
use &path_ thanh.\data\hphi in 0 endif
if !used('macv')
use &path_ thanh.\data\macv in 0 endif
if !used('thebhyt')
use &path_ thanh.\data\thebhyt in 0 endif
if !used('hopdong')
use &path_ thanh.\data\hopdong in 0 endif
if !used('llnv')
use &path_ thanh.\data\llnv order dvnv in 0 endif
if !used('hocham')
use &path_ thanh.\data\hocham in 0 endif
if !used('tdnnth')
endif
if !used('mangach')
use &path_ thanh.\data\mangach in 0 endif
if !used('dmheso')
use &path_ thanh.\data\dmheso in 0 endif
if !used('dmhscv')
use &path_ thanh.\data\dmhscv in 0 endif
if !used('dmhslc')
use &path_ thanh.\data\dmhslc in 0 endif
if !used('tangbc')
use &path_ thanh.\data\tangbc in 0 endif =CURSORSETPROP('Buffering',5,'LLNV') =CURSORSETPROP('Buffering',5,'HOPDONG') =CURSORSETPROP('Buffering',5,'CONGVIEC') =CURSORSETPROP('Buffering',5,'QTDAOTAO') =CURSORSETPROP('Buffering',5,'GIACANH') =CURSORSETPROP('Buffering',5,'XUATCANH') =CURSORSETPROP('Buffering',5,'SUCKHOE') =CURSORSETPROP('Buffering',5,'THEBHYT') =CURSORSETPROP('Buffering',5,'HPHI') =CURSORSETPROP('Buffering',5,'KTKL')
set order to manv in hopdong set order to manv in thebhyt set order to madv in bophan set order to mahv in hocvan
select llnv set order to dvnv
Set relation to MANV into HOPDONG Set relation to MANV into THEBHYT ADDI Set relation to MADV into BOPHAN ADDI Set relation to MAHV into HOCVAN ADDI create table (thisform.cdbf) (heso n (5,2)) use dbf() alias listngach
Form_Unload() select llnv set relation to *thisform.update if !used('llluu') use &path_thanh.\data\llluu in 0 endif if !used('hdluu')
use &path_ thanh.\data\hdluu in 0 endif
select * from hopdong where !empty(ngaynghi) and ngaynghi<=date() into cursor abcd do while !eof('abcd') select abcd scatter memvar if !seek(abcd.manv,'hdluu','manv') select hdluu append blank gather memvar endif if seek(abcd.manv,'llnv','manv') select llnv scatter memvar if !seek(abcd.manv,'llluu','manv') select llluu append blank gather memvar endif endif if seek(abcd.manv,'llnv','manv') delete in llnv endif if seek(abcd.manv,'hopdong','manv') delete in hopdong endif skip in abcd enddo use in abcd if used('listngach') use in listngach
delete file (thisform.cDBF+'.*') endif Cmdback_click() if !bof('llnv') then skip -1 in llnv endif if bof('llnv') then this.enabled=.f. endif thisform.commandgroup1.cmdnext.enabled=!eof('llnv') =seek(llnv.Manv,'hopdong','manv') =seek(llnv.Manv,'thebhyt','manv') thisform.pageframe1.page1.image1.picture=llnv.hinhanh
thisform.pageframe1.page2.grid1.recordsource=[select a.ndcv,b.tenbp,a.mucluong,a.ngayhl from congviec a,bophan b where a.manv=llnv.manv and a.madvct=b.madv into cursor listcongviec] for i=2 to 9 ts='thisform.pageframe1.page'+str(i,1) &ts..mmanv.value=llnv.manv &ts..text2.value=alltrim(llnv.ho)+[ ]+llnv.ten &ts..text3.value=iif(seek(llnv.madv,'bophan','madv'),bophan.tenbp,[]) next i IF inlist(hopdong.loaihd,"BC","DH") thisform.pageframe1.page4.LABEL4.VISIBLE = .F. thisform.pageframe1.page4.LABEL5.VISIBLE = .F. thisform.pageframe1.page4.LABEL11.VISIBLE = .F. thisform.pageframe1.page4.SPINNER1.VISIBLE = .F. thisform.pageframe1.page4.MDENNGAY.VISIBLE = .F. ELSE thisform.pageframe1.page4.LABEL4.VISIBLE = .T. thisform.pageframe1.page4.LABEL5.VISIBLE = .T. thisform.pageframe1.page4.LABEL11.VISIBLE = .T. thisform.pageframe1.page4.SPINNER1.VISIBLE = .T. thisform.pageframe1.page4.MDENNGAY.VISIBLE = .T. ENDIF thisform.heso=hopdong.hs_lc thisform.ma=hopdong.mangach thisform.listngach thisform.pageframe1.refresh thisform.pageframe1.page4.combo1.refresh THISFORM.PAGEFRAME1.PAGE7.BHXHTHANG.VALUE =MOD((HOPDONG.TGBHXH - HOPDONG.K_TINHBHXH),12) THISFORM.PAGEFRAME1.PAGE7.BHXHNAM.VALUE = INT((HOPDONG.TGBHXH - HOPDONG.K_TINHBHXH)/12) THISFORM.pageframe1.page7.BHXHNAM.refresh THISFORM.pageframe1.page7.bhxhthang.refresh CmdNext_click() if !bof('llnv') then skip -1 in llnv endif if bof('llnv') then this.enabled=.f. endif thisform.commandgroup1.cmdnext.enabled=!eof('llnv') =seek(llnv.Manv,'hopdong','manv') =seek(llnv.Manv,'thebhyt','manv') thisform.pageframe1.page1.image1.picture=llnv.hinhanh thisform.pageframe1.page2.grid1.recordsource=[select a.ndcv,b.tenbp,a.mucluong,a.ngayhl from congviec a,bophan b where a.manv=llnv.manv and a.madvct=b.madv into cursor listcongviec]
ts='thisform.pageframe1.page'+str(i,1) &ts..mmanv.value=llnv.manv &ts..text2.value=alltrim(llnv.ho)+[ ]+llnv.ten &ts..text3.value=iif(seek(llnv.madv,'bophan','madv'),bophan.tenbp,[]) next i IF inlist(hopdong.loaihd,"BC","DH") thisform.pageframe1.page4.LABEL4.VISIBLE = .F. thisform.pageframe1.page4.LABEL5.VISIBLE = .F. thisform.pageframe1.page4.LABEL11.VISIBLE = .F. thisform.pageframe1.page4.SPINNER1.VISIBLE = .F. thisform.pageframe1.page4.MDENNGAY.VISIBLE = .F. ELSE thisform.pageframe1.page4.LABEL4.VISIBLE = .T. thisform.pageframe1.page4.LABEL5.VISIBLE = .T. thisform.pageframe1.page4.LABEL11.VISIBLE = .T. thisform.pageframe1.page4.SPINNER1.VISIBLE = .T. thisform.pageframe1.page4.MDENNGAY.VISIBLE = .T. ENDIF thisform.heso=hopdong.hs_lc thisform.ma=hopdong.mangach thisform.listngach thisform.pageframe1.refresh thisform.pageframe1.page4.combo1.refresh THISFORM.PAGEFRAME1.PAGE7.BHXHTHANG.VALUE =MOD((HOPDONG.TGBHXH - HOPDONG.K_TINHBHXH),12) THISFORM.PAGEFRAME1.PAGE7.BHXHNAM.VALUE = INT((HOPDONG.TGBHXH - HOPDONG.K_TINHBHXH)/12) THISFORM.pageframe1.page7.BHXHNAM.refresh THISFORM.pageframe1.page7.bhxhthang.refresh CmdFind_Click() if !bof('llnv') then skip -1 in llnv endif if bof('llnv') then this.enabled=.f. endif thisform.commandgroup1.cmdnext.enabled=!eof('llnv') =seek(llnv.Manv,'hopdong','manv') =seek(llnv.Manv,'thebhyt','manv') thisform.pageframe1.page1.image1.picture=llnv.hinhanh thisform.pageframe1.page2.grid1.recordsource=[select a.ndcv,b.tenbp,a.mucluong,a.ngayhl from congviec a,bophan b where a.manv=llnv.manv and a.madvct=b.madv into cursor listcongviec] for i=2 to 9 ts='thisform.pageframe1.page'+str(i,1) &ts..mmanv.value=llnv.manv &ts..text2.value=alltrim(llnv.ho)+[ ]+llnv.ten &ts..text3.value=iif(seek(llnv.madv,'bophan','madv'),bophan.tenbp,[])
next i IF inlist(hopdong.loaihd,"BC","DH") thisform.pageframe1.page4.LABEL4.VISIBLE = .F. thisform.pageframe1.page4.LABEL5.VISIBLE = .F. thisform.pageframe1.page4.LABEL11.VISIBLE = .F. thisform.pageframe1.page4.SPINNER1.VISIBLE = .F. thisform.pageframe1.page4.MDENNGAY.VISIBLE = .F. ELSE thisform.pageframe1.page4.LABEL4.VISIBLE = .T. thisform.pageframe1.page4.LABEL5.VISIBLE = .T. thisform.pageframe1.page4.LABEL11.VISIBLE = .T. thisform.pageframe1.page4.SPINNER1.VISIBLE = .T. thisform.pageframe1.page4.MDENNGAY.VISIBLE = .T. ENDIF thisform.heso=hopdong.hs_lc thisform.ma=hopdong.mangach thisform.listngach thisform.pageframe1.refresh thisform.pageframe1.page4.combo1.refresh THISFORM.PAGEFRAME1.PAGE7.BHXHTHANG.VALUE =MOD((HOPDONG.TGBHXH - HOPDONG.K_TINHBHXH),12) THISFORM.PAGEFRAME1.PAGE7.BHXHNAM.VALUE = INT((HOPDONG.TGBHXH - HOPDONG.K_TINHBHXH)/12) THISFORM.pageframe1.page7.BHXHNAM.refresh THISFORM.pageframe1.page7.bhxhthang.refresh CmdAdd_Click() if getnextmodified(0,'llnv')<>0 or getnextmodified(0,'hopdong')<>0 or getnextmodified(0,'thebhyt')<>0; or getnextmodified(0,'congviec')<>0 or getnextmodified(0,'qtdaotao')<>0 or getnextmodified(0,'giacanh')<>0; or getnextmodified(0,'xuatcanh')<>0 or getnextmodified(0,'suckhoe')<>0 or getnextmodified(0,'hphi')<>0; or getnextmodified(0,'ktkl')<>0 then =tableupdate(.t.,.t.,'llnv') =tableupdate(.t.,.t.,'hopdong') =tableupdate(.t.,.t.,'thebhyt') =tableupdate(.t.,.t.,'congviec') =tableupdate(.t.,.t.,'suckhoe') =tableupdate(.t.,.t.,'qtdaotao') =tableupdate(.t.,.t.,'giacanh') =tableupdate(.t.,.t.,'xuatcanh') =tableupdate(.t.,.t.,'hphi') =tableupdate(.t.,.t.,'ktkl') endif with thisform.pageframe1.page1 =flock('llnv')
select max(manv) as _max from llnv into cursor abcd cManv=tran(val(_max)+1,'@L 99999')
use in abcd unlock in llnv
thisform.oldmanv=llnv.manv mpay=heso.mltt
mhs_th=0
insert into llnv (manv,mnvmay,phai) value (cManv,cManv,'Nam')
insert into hopdong(manv,manvmay,luonghd,hs_th,hs_tn,hs_dh) value (cManv,cManv,mpay,mhs_th,0.2,0.4)
insert into thebhyt(manv) value (cManv) thisform.heso=hopdong.hs_lc .image1.picture=[] .refresh .madv.setfocus endwith CmdDelete_Click()
if messagebox([Đồng ý hủy nhân viện này ?],36,_screen.caption)=6 cManv=thisform.pageframe1.page1.manv.value if seek(cManv,'llnv','manv') delete in llnv endif if seek(cManv,'hopdong','manv') delete in hopdong endif if seek(cManv,'thebhyt','manv') delete in thebhyt endif
delete for manv=cManv in congviec delete for manv=cManv in qtdaotao delete for manv=cManv in giacanh delete for manv=cManv in xuatcanh delete for manv=cManv in hphi delete for manv=cManv in suckhoe delete for manv=cManv in ktkl
=tableupdate(.t.,.t.,'llnv') =tableupdate(.t.,.t.,'hopdong') =tableupdate(.t.,.t.,'thebhyt') =tableupdate(.t.,.t.,'congviec') =tableupdate(.t.,.t.,'qtdaotao') =tableupdate(.t.,.t.,'xuatcanh') =tableupdate(.t.,.t.,'giacanh') =tableupdate(.t.,.t.,'hphi') =tableupdate(.t.,.t.,'suckhoe') =tableupdate(.t.,.t.,'ktkl') do case case !eof('llnv') skip in llnv
skip -1 in llnv endcase
thisform.commandgroup1.cmdnext.click endif
Form In lý lịch nhân viên
FormBCC_Load()
HOPDONG = PRE_DIR + "\DATA\HOPDONG.DBF" BOPHAN = PRE_DIR + "\DATA\BOPHAN.DBF" LLNV = PRE_DIR + "\DATA\LLNV.DBF" HOCVAN = PRE_DIR + "\DATA\HOCVAN.DBF" CONGVIEC = PRE_DIR + "\DATA\CONGVIEC.DBF"
THISFORM.LLNVTAM = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".DBF" THISFORM.TAM = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".DBF"
THISFORM.BROWTAM = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".DBF" THISFORM.CV_TAM = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".DBF" THISFORM.T_GIAN = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".DBF" THISFORM.IDX = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".IDX" THISFORM.IDX1 = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".IDX" THISFORM.IDX2 = PRE_DIR + "\TEXT\" + SUBS(SYS(2015),3,10) + ".IDX" CLOS DATA
THISFORM.FLAG =.T. ThisForm.Kiem_tra =.T. thisform.tendv = " " SELE 0
USE (HOPDONG) SHARE ALIAS HOPDONG again order manv noupdate SET FILT TO
SELE 0
USE (LLNV) SHARE ALIAS LLNV again noupdate SET FILT TO
SELE LLNV.MANV AS MANV, ;
LLNV.MADV,ALLT(LLNV.HO) + " " + ALLT(LLNV.TEN) AS HOTEN, ; LLNV.PHAI, ; LLNV.NGAYSINH, ; LLNV.MAHV, ; LLNV.NOISINH, ; LLNV.NOIO, ; HOPDONG.LUONGHD, ; hopdong.hs_lc, ; HOPDONG.C_THICH_CV, ; HOPDONG.NGAYDENCT ;
FROM LLNV, HOPDONG INTO DBF (THISFORM.LLNVTAM) ;
WHERE ALLT(LLNV.MANV) = ALLT(HOPDONG.MANV) AND ! EMPTY(LLNV.MANV) ;
ORDE BY llnv.madv, llnv.ten ; GROUP BY llnv.manv
&&,
CLOS DATA
SELE 0
USE (BOPHAN) SHARE ALIAS BOPHAN again noupdate order madv SELE 0
USE (CONGVIEC) SHARE ALIAS CONGVIEC again noupdate SELE 0
USE (HOCVAN) SHARE ALIAS HOCVAN again noupdate ORDER MAHV SELE 0
USE (THISFORM.LLNVTAM) ALIAS LLNVTAM INDEX ON MADV TO (THISFORM.IDX)
FormBCC_Print_lltn() para p_print SELE LLNVTAM DO CASE CASE ThisForm.chkALL.Value = .T. If EOF() =messagebox('Không có số liệu',48,_screen.caption) return .f. else ThisForm.TOANCTY() Endif CASE ThisForm.CMBDVI.enabled = .T.
COUNT FOR LLNVTAM.MADV = ThisForm.CMBDVI.Value To AA IF AA =0 =messagebox('Khọng có số liệu',48,_screen.caption) return .f. ELSE ThisForm.TOANCTY() ENDIF CASE ThisForm.MTEN.enabled = .T. ThisForm.TOANCTY() ENDCASE SELE LLNVTAM go top lc_filter= set('FILTER')
set rela to madv into BOPHAN addi set rela to mahv into HOCVAN addi set rela to MANV into CV_TAM addi set rela to MANV into TAM addi DO CASE
CASE ThisForm.chkALL.Value = .T. SET FILT TO
CASE ThisForm.CMBDVI.enabled = .T.
SET FILT TO MADV = ThisForm.CMBDVI.Value =seek(ThisForm.CMBDVI.Value,'bophan')
thisform.tendv = bophan.tenbp GO TOP
CASE ThisForm.MTEN.enabled = .T.
SET FILT TO MANV = ThisForm.MMANV GO TOP
ENDCASE if p_print
REPO FORM (THISFORM.BAOCAO1) to printer prompt noconsole else
REPO FORM (THISFORM.BAOCAO1) preview endif
sele LLNVTAM set filter to &lc_filter set rela to set filt to go top ThisForm.mten.Enabled = .T. ThisForm.cmbdvi.Enabled = .T. Thisform.chkall.Enabled = .T. ThisForm.chkALL.Value = .F. ThisForm.mten.value = " " ThisForm.cmbdvi.Value = " " Thisform.tendv = " " *THISFORM.FLAG =.T. FormBCC_Toancty()
IF ThisForm.Kiem_tra =.T. && Bien kiem tra chi vao thu tuc nay mot lan dau ThisForm.Kiem_tra =.F.
SELE
CONGVIEC.MANV,CONGVIEC.NGAYHL,CONGVIEC.MADVCT,BOPHAN.tenbp FROM CONGVIEC,BOPHAN ;
INTO DBF (THISFORM.T_GIAN) WHERE !DELE() AND CONGVIEC.MADVCT = BOPHAN.MADV
USE DBF() ALIAS T_GIAN EXCL && FILE DAY DU
SELE MAX(T_GIAN.NGAYHL) AS
NGAYHL,T_GIAN.MANV,T_GIAN.MADVCT;
FROM T_GIAN WHERE !EMPTY(T_GIAN.MANV) AND ; !EMPTY(T_GIAN.MADVCT);
INTO DBF (THISFORM.TAM) GROUP BY T_GIAN.MANV
USE DBF() ALIAS TAM EXCL &&FILE LOC NHUNG RECORD CO NGAY LON NHAT
INDEX ON MANV TO (THISFORM.IDX2) SCAN
BIEN_NGAY = TAM.NGAYHL SELE T_GIAN
DELE FOR T_GIAN.MANV = BIEN AND T_GIAN.NGAYHL = BIEN_NGAY
SELE TAM ENDSCAN
&& Sau khi chay vong Scan thi file T_GIAN con lai nhung mau tin hop le
SELE MAX(T_GIAN.NGAYHL) AS
NGAYHL,T_GIAN.MANV,T_GIAN.MADVCT,T_GIAN.tenbp FROM T_GIAN;
WHERE !DELE() INTO DBF (THISFORM.CV_TAM) GROUP BY T_GIAN.MANV
USE DBF() ALIAS CV_TAM
INDEX ON MANV TO (THISFORM.IDX1) ENDIF
Form Danh sách nhân viên
FormDSNV_Load()
SET DATE FRENCH CLOSE TABLE ALL
PUBLIC pTUOIMIN , pTUOIMAX , pTUTHANG , pDENTHANG , pGIOITINH , pDANTOC , pTONGIAO , ;
pTINH_TP , pTDHV , pTDCM , pTDNN , pTNCT , pLUONGMIN , pLUONGMAX , pBOPHAN , ;
pDOANTHE,pMangach *---*
STORE ' ' TO pGIOITINH , pDANTOC , pTONGIAO , pTINH_TP , ; pTDHV , pTDCM , pTDNN , ; pBOPHAN , pDOANTHE , ; pTUOIMIN , pTUOIMAX , pTNCT , ;
pLUONGMIN , pLUONGMAX , pTUTHANG , ;
pDENTHANG,pMangach
THIS.BAOCAO = PRE_DIR + '\REPO\R_LD2411.FRX' DANTOC = PRE_DIR + '\DATA\DANTOC.DBF'
TONGIAO = PRE_DIR + '\DATA\TONGIAO.DBF' btdtt = PRE_DIR + '\DATA\btdtt.DBF' TDHV = PRE_DIR + '\DATA\HOCVAN.DBF' TDCM = PRE_DIR + '\DATA\CTDAOTAO.DBF' TDNN = PRE_DIR + '\DATA\NGOAINGU.DBF'
BPCT = PRE_DIR + '\DATA\BOPHAN.DBF' LLNV = PRE_DIR + '\DATA\LLNV.DBF' HOPDONG = PRE_DIR + '\DATA\HOPDONG.DBF' MAHD = PRE_DIR + '\DATA\MAHD.DBF' mangach = PRE_DIR + '\DATA\mangach.DBF' *---*
SELE 0
USE (MAHD) ALIAS MAHD SHARE ORDER MAHD SELE 0
USE (DANTOC) ORDE MADT ALIA DANTOC SELE 0
USE (TONGIAO) ORDE MATGIAO ALIA TONGIAO SELE 0
USE (btdtt) ORDE matt ALIA btdtt SELE 0
USE (TDHV) ORDE MAHV ALIA HOCVAN SELE 0
USE (TDCM) ORDE MACTDT ALIA CTDAOTAO SELE 0
USE (TDNN) ORDE MANN ALIA NGOAINGU SELE 0
USE (BPCT) ORDE MADV ALIA BOPHAN SELE 0
USE (LLNV) ORDE MANV ALIA LLNV SELE 0
USE (HOPDONG) ALIA HOPDONG select 0
use (mangach) alias mangach
FrmDSNV_prn() parameter _print IF THISFORM.chkDANG.VALUE = 1 DK_DANG = '( !EMPTY(HOPDONG.DANG) = .T. )' THISFORM.DANG = 'Đảng : X'+ chr(13) ELSE DK_DANG = '.T.' THISFORM.DANG = '' ENDI *---* IF THISFORM.chkCHIBO.VALUE = 1 DK_CHIBO = '( !EMPTY(HOPDONG.CHI_BO) = .T. )' THISFORM.CHIBO = 'Chi bộ : X'+ chr(13) ELSE DK_CHIBO = '.T.' THISFORM.CHIBO = '' ENDI
*---*
IF THISFORM.chkCONGDOAN.VALUE = 1
DK_CDOAN = '( !EMPTY(HOPDONG.CONG_DOAN) = .T. )' THISFORM.CONGDOAN = 'Công đoàn : X'+chr(13) ELSE DK_CDOAN = '.T.' THISFORM.CONGDOAN = '' ENDI *---* IF THISFORM.chkDOAN.VALUE = 1 DK_DOAN = '( !EMPTY(HOPDONG.DOAN) = .T. )' THISFORM.DOAN = 'Đoàn : X'+chr(13) ELSE DK_DOAN = '.T.' THISFORM.DOAN = '' ENDI *---* DO CASE
CASE !EMPTY(pTUTHANG) AND EMPTY(pDENTHANG)
DK_TS = '( MONTH(LLNV.NGAYSINH) = VAL(pTUTHANG) )' THISFORM.THANGSINH = 'Tháng sinh : ' + pTUTHANG + chr(13)
CASE EMPTY(pTUTHANG) AND !EMPTY(pDENTHANG)
DK_TS = '( MONTH(LLNV.NGAYSINH) = VAL(pDENTHANG) )'
THISFORM.THANGSINH = 'Tháng sinh : ' + pDENTHANG + chr(13)
CASE !EMPTY(pTUTHANG) AND !EMPTY(pDENTHANG)
DK_TS = '( MONTH(LLNV.NGAYSINH) BETWEEN VAL(pTUTHANG) AND VAL(pDENTHANG) )'
THISFORM.THANGSINH = 'Tháng sinh : ' + pTUTHANG + ' - ' + pDENTHANG + chr(13)
CASE EMPTY(pTUTHANG) AND EMPTY(pDENTHANG) DK_TS = '.T.'
THISFORM.THANGSINH = '' ENDC
*---* DO CASE
CASE !EMPTY(pTUOIMIN) AND EMPTY(pTUOIMAX)
DK_TUOI = '( YEAR(DATE())-YEAR(LLNV.NGAYSINH)>= VAL(pTUOIMIN) )'