Thiết kế giao diện của chơng trình

Một phần của tài liệu Phân tích, thiết kế hệ thống thông tin quản lý nhân sự tại Công ty Phần mềm quản lý doanh nghiệp FAST (Trang 64 - 112)

- 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) )'

Một phần của tài liệu Phân tích, thiết kế hệ thống thông tin quản lý nhân sự tại Công ty Phần mềm quản lý doanh nghiệp FAST (Trang 64 - 112)