III. ĐÁNH GIÁ CHƯƠNG TRèNH
3. Hướng phỏt triển đề tài
Trong ngành NH luụn đi đầu trong ứng dụng cụng nghệ thụng tin, quản lý TSCĐ là một trong những chương trỡnh cú tớnh thực tế cao và hiện nay NH đang cú kế hoạch sử dụng phần mềm tin học ứng dụng trong quản lý TSCĐ.
Chương trỡnh cú hệ thống bỏo cỏo chuẩn, chớnh xỏc rất hiệu qủa trong việc quản lý TSCĐ. Trong tương lai em sẽ khắc phục những nhược điểm, thờm những chức năng ưu việt và chỉnh sửa cho chương trỡnh trở nờn chuyờn nghiệp hơn. Hoàn thiện chương trỡnh để chương trỡnh cú tớnh khả thi cao, cú khả năng ỏp dụng rộng rói khụng chỉ trong ngành ngõn hàng.
KẾT LUẬN
Với những kiến thức đó học trong suốt bốn năm qua, đặc biệt là những kiến thức thực tế đó tớch lũy được trong thời gian thực tập cựng với sự hướng dẫn tận tỡnh của thầy P.GS-TS Hàn Viết Thuận và cỏn bộ hướng dẫn Nguyễn Danh Vận em đó chọn đề tài “ Xõy dựng hệ thống thụng tin Quản lớ tài sản cố định trong NHNo&PTNT Nam Hà Nội” và đó hoàn thành luận văn tốt nghiệp của mỡnh.
Ngõn hàng là một ngành cú tớnh chất đặc thự riờng, cụng nghệ thụng tin đó được ỏp dụng từ rất sớm và khỏ hoàn chỉnh và đồng bộ song việc quản lý TSCĐ vẫn cũn ỏp dụng một cỏch thủ cụng do vậy chương trỡnh này được ỏp dụng để quản lý TSCĐ đặc thự trong NHNo&PTNT Nam Hà Nội, nhằm giỳp cho quỏ trỡnh quản lý được hoàn thiện hơn, đem lại hiệu quả kinh doanh cao hơn
Khi thực hiện luận văn em đó cố gắng để hoàn thành những mục tiờu đề ra ban đầu, song do khả năng cũn hạn chế và thời gian cú hạn nờn em khụng trỏnh khỏi những thiếu xút. Vỡ vậy em rất mong được sự chỉ bảo của cỏc thầy, cỏc cụ để luận văn được hoàn thiện và củng cố kiến thức của em trong tương lai.
Sau này khi cú điều kiện em sẽ phỏt triển chương trỡnh thành một phần mềm cú khả năng ỏp dụng cho cỏc chi nhỏnh ngõn hàng khỏc hoặc cỏc doanh nghiệp khỏc khụng phải ngành ngõn hàng.
Một lần nữa em xin cảm ơn thầy PGS.TS Hàn Viết Thuận, cỏc anh chị phũng Kế toỏn và Ngõn quỹ trong NHNo&PTNT Nam Hà Nội, gia đỡnh, bạn bố đó giỳp em hoàn thành đề tài này.
Sinh viờn Đào Thị Lan Hương
TÀI LIỆU THAM KHẢO
1. Giỏo trỡnh cấu trỳc dữ liệu và giải thuật Tỏc giả: PGS.TS. Hàn Viết Thuận NXB : Thống kờ
Hà nội : 2005
2. Giỏo trỡnh Hệ thống thụng tin quản lý
Tỏc giả: TS Trương Văn Tỳ – TS Trần Thị Song Minh NXV : Thống kờ
Hà nội : 2000
3. Những bài thực hành Visual FoxPro
Biờn tập và biờn soạn:VN- GUIDE và kĩ sư tin học Đinh Lõm Xuõn NXV : Thống kờ
4. Phõn tớch thiết kế hệ thống thụng tin quản lý Tỏc giả: ThS Đinh Thế Hiển
NXV : Thống kờ 5. Cơ sở dữ liệu
Tỏc giả: Trần Cụng Uẩn NXB : Thống kờ
Hà nội : 2000
6. Kế toỏn tài chớnh trong cỏc doanh nghiệp Tỏc giả: TS Đặng Thị Loan
NXB : Giỏo dục Hà nội : 2001
7. Tài liệu tập huấn tài sản cố định
Ngõn hàng nụng nghiệp và phỏt triển nụng thụn Nam Hà nội Hà nội : Thỏng 4 năm 2004
NHẬN XẫT CỦA GIÁO VIấN HƯỚNG DẪN ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
NHẬN XẫT CỦA GIÁO VIấN PHẢN BIỆN ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
MỘT SỐ ĐOẠN CODE NGUỒN TIấU BIỂU
Phần code gọi chương trỡnh main
*** Main chuong trinh, dung de goi cac chuong trinh thuc thi khac * Khoi tao moi truong
DO setenvi
* Khoi tao duong dan cho chuong trinh
PUBLIC M_root
CLEAR
_Prog = SYS(16)
_Vt = AT("\", _Prog,OCCURS("\", _Prog)) M_Root = SUBSTR(_Prog, 1, _Vt)
* Loai bo "Prog"
SET DEFA TO (M_Root)
* Khoi tao duong dan
DO Prog\p_setpath.prg
* Khoi tao cac bien he thong
DO (D_Prog + [p_setsysvar.prg])
DO khoitao IN (D_PROG+[p_setthongso])
* Khoi tao man hinh hien thi
WITH _Screen .CLOSABLE=.F. .ICON=(D_IMG+[program2.ico]) .ControlBox=.T. .MaxButton=.F. .MinButton=.T. .Height=600 .Width=800
.Caption='Quan ly tai san co dinh' .WindowState=2
.Picture=(D_IMG+[WINdowsXP.jpg])
ENDWITH CLEA
* Vao chuong trinh chinh
ON KEY LABEL ALT+Q DO End s_user=""
DO (D_PROG+[p_setmenu])
DO (D_PROG+[p_settoolbar])
DO FORM (D_FORM+[f_login])
* Ket thuc chuong trinh
READ EVENTS ON KEY LABEL ALT+Q
RETURN
*---
PROCEDURE ReleT
SET SYSMENU TO
IF WEXIST([Report controls]) HIDE WIND [Report controls]
ENDIF
IF WEXIST([Form Controls]) HIDE WIND [Form Controls]
ENDIF
IF WEXIST([Database Designer]) HIDE WIND [Database Designer]
IF WEXIST([Form Designer]) HIDE WIND [Form Designer]
ENDIF
IF WEXIST([Color Palette]) HIDE WIND [Color Palette]
ENDIF
IF WEXIST([Layout]) HIDE WIND [Layout]
ENDIF
IF WEXIST([Report Designer]) HIDE WIND [Report Designer]
ENDIF
IF WEXIST([Query Designer]) HIDE WIND [Query Designer]
ENDIF
IF WEXIST([View Designer]) HIDE WIND [View Designer]
ENDIF
IF WEXIST([Standard]) HIDE WIND [Standard]
ENDIF RETURN
******************************
PROCEDURE setenvi
* Khoi tao gia tri moi truong
SET SAFETY OFF SET TALK OFF SET DATE DMY SET DELETED ON SET ESCAPE ON SET EXAC ON SET STATUS OFF SET CENTURY ON SET COLO TO B+/BG
SET STATUS BAR ON
DEFINE WINDOW WinBrw FROM 1, 0 TO FLOOR(SROWS()) - 1, FLOOR(SCOLS())
COLOR SCHEME 10;
CLOSE FLOAT GROW MINIMIZE ZOOM SYSTEM FONT [Vk sans serif],8
RETURN
***********************************
PROCEDURE End
SET Sysmenu TO DEFAULT CLEAR ALL
CLEAR EVENTS CLEAR
_vfp.StatusBar=""
_screen.Caption="Microsoft Visual Foxpro"
_screen.Picture=""
_screen.Icon=""
RETURN
Phần code để tạo menu tự động:
* Mo bang tb_menu
IF !USED('tb_menu')
USE (D_sys + [tb_menu]) ALIAS tb_menu IN 0
ELSE
ENDIF
SELECT tb_menu
* Sap xep theo khoa chi so thu 3
INDEX on tb_menu.menu_id+tb_menu.menu_id0 TAG menuindex
SET ORDER TO menuindex
* Tao menu tu bang tb_menu, thuat toan su dung cmenu_id, neu cmenu_id khong co gia tri thi no la Pad
CLEAR
SET SYSMENU TO && Lam mat het cac muc trong menu hien thoi
GO TOP
i=1
SCAN
IF EMPTY(tb_menu.menu_id0) THEN
************** Xac dinh tieu de menu *************
pa_menu="p_"+ ALLTRIM(tb_menu.menu_id)
DEFINE PAD &pa_menu OF _mSYSmenu PROMPT ALLTRIM(tb_menu.bar) SKIP FOR s_user=""
ON PAD &pa_menu OF _mSysmenu ACTIVATE POPUP &pa_menu
DEFINE POPUP &pa_menu MARGIN RELATIVE ELSE
**************Xac dinh menu chi tiet***************
i=i+1
DEFINE BAR i OF &pa_menu PROMPT ALLTRIM(tb_menu.bar)
_Pro=ALLTRIM(tb_menu.procedure) ON SELECTION BAR i OF &pa_menu &_PRo ENDIF
ENDSCAN
Phần code để đăng nhập vào chương trỡnh
* Doan chuong trinh phuc vu dang nhap, quan ly nguoi su dung
PROCEDURE tb_user_open
IF !USED('tb_user')
SELECT 0
USE (D_SYS+[tb_user]) ALIAS tb_user
ELSE
SELECT tb_user
ENDIF ENDPROC
******************************************************** * Kiem tra trong danh muc co ton tai ten dang nhap khong
FUNCTION tb_user_login
* 1 ten nguoi dung khong ton tai, 2 Sai mat khau *3 Dang nhap thanh cong
PARAMETERS _user,_passw
DO tb_user_open
GO top
LOCATE FOR UPPER(ALLTRIM(cuser))==UPPER(ALLTRIM(_user))
IF FOUND() then
_right=cright
GO top
LOCATE FOR ALLTRIM(cpassw)==ALLTRIM(_passw)
IF FOUND()
*!* MESSAGEBOX(" Ban da dang nhap thanh cong",0,"Xin chao")
* Dua vao cac bien he thong
s_user=ALLTRIM(_user) S_right=ALLTRIM(_right) s_passw=ALLTRIM(_passw)
RETURN 3
ELSE
MESSAGEBOX("Ban da nhap sai mat khau")
RETURN 2
ENDIF ELSE
MESSAGEBOX("Khong co tai khoan nguoi dung nay, ban hay nhap lai")
RETURN 1
ENDIF RETURN
************************************************************* * THem nguoi dung moi vao trong danh sach
Function tb_user_Them
PARAMETERS _user,_passw1,_passw2
* kiem tra xem nguoi dung nhap vao co trong danh sach khong * 1, ten nguoi dung da bi trung, 2 mat khau khong khop nhau * 3 Them thanh cong
DO tb_user_open
GO TOP
SET ORDER TO 1
IF !SEEK(ALLTRIM(_user))
* Kiem tra ma co trung khong
IF ALLTRIM(_passw1)==ALLTRIM(_passw2)
MESSAGEBOX("Da them nguoi dung vao he thong",0,"Thong bao")
RETURN 3
ELSE
MESSAGEBOX("Hai mat khau khong khop nhau",0,"Thong bao")
RETURN 2
ENDIF ELSE
MESSAGEBOX("Da co nguoi dung nay trong danh sach")
RETURN 1
ENDIF ENDFUNC
*****************Doi mat khau***********************************
FUNCTION tb_user_SuaPass
PARAMETERS _passcu,_passw1,_passw2
* SO sanh voi S_Passw xem trung khong * 1 khong trung, 2 2 pass word khong khop * 3 Doi pass thanh cong
IF ALLTRIM(_passcu)==ALLTRIM(S_passw) then
IF ALLTRIM(_passw1)==ALLTRIM(_passw2)
MESSAGEBOX("Mat khau da duoc doi",0,"Thong bao") s_passw=ALLTRIM(_passw1)
RETURN 3
ELSE
MESSAGEBOX("Hai mat khau khong khop nhau",0,"Thong bao")
RETURN 2
ENDIF ELSE
MESSAGEBOX("Khong khop so voi mat khau cu")
ENDIF RETURN
******************Xoa nguoi dung***************************** * Chi co nguoi co tai khoan loai Admin moi dc xoa nguoi su dung * S_right='Admin'
FUNCTION tb_user_xoa
* Khong dc xoa tai khoan co user la Admin, khong dc xoa tai khoan la chinh minh
* Combo box hien thi se luoc bo 2 nguoi nay
ENDFUNC
Phần code gọi danh mục và cập nhật, sửa xúa cho cỏc danh mục
Danh mục hợp đồng
* Program nhap 0them xoa sua cho danh muc khach hang * tham so neu la nhap moi
PROCEDURE tb_dmhd_Open
IF !USED("tb_dmhd")
use (D_DATA+[tb_dmhd]) ALIAS tb_dmhd IN 0
ELSE SELECT tb_dmhd ENDIF ENDPROC ********************************************** PROCEDURE tb_dmhd_init
* Khai bao bien
PUBLIC m.so_hd,m.loai_hd, _Moi_sua,_prompt,_recno,_macu
&&_MOI_SUA de luu trang thai X- xem, S-sua,M-them moi
STORE "" to m.so_hd,m.loai_hd,_prompt
ENDPROC
PROCEDURE tb_dmhd_F4
SELECT tb_dmhd
SCATTER memvar MEMO BLANK
_Moi_sua=[M]
_Prompt="Them mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1hd]) POP key ENDPROC ************************************************** PROCEDURE tb_dmhd_F3 SELECT tb_dmhd
SCATTER memvar Memo
_recno=RECNO() _macu=m.so_hd _Moi_Sua=[S]
_prompt="Sua mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1hd])
POP key ENDPROC
************************************************
SELECT tb_dmhd
IF MESSAGEBOX("Co chac muon xoa?",4,"Chu y")=6 then DELETE USE IN cur_dmhd Pack IF !EOF() SKIP ENDIF
IF EOF() and !BOF()
SKIP -1 ENDIF ENDIF ENDPROC *************************************************** PROCEDURE tb_dmhd_ESC CLOSE ALL
* Dong bang bang nut
ENDPROC *************************************************** FUNCTION tb_dmhd_nhan SELECT tb_dmhd SET ORDER TO 1 tm=.F.
* Kiem tra ma trong
IF EMPTY(m.so_hd) OR Empty(m.loai_hd) then
MESSAGEBOX("Ban da de trong truong ma hoac truong ten hoac truong ma nhom khach hang",0,"Chu y")
ELSE
* them cac kiem tra khac neu can * kiem tra ma trung
IF _Moi_sua=[M] then
IF SEEK(ALLTRIM(m.so_hd))
MESSAGEBOX("Ma da co trong danh muc")
ELSE
* Cap nhat vao bang
APPEND blank
GATHER memvar memo
tm=.T.
ENDIF ELSE
IF SEEK(ALLTRIM(m.so_hd)) and (_recno#RECNO())
MESSAGEBOX("Ma da co trong danh muc")
ELSE
GO _recno
GATHER memvar Memo
tm=.T. ENDIF ENDIF ENDIF return tm **************************************************** PROCEDURE tb_dmhd_huy ENDPROC ***************************************************** PROCEDURE tb_dmhd_Xem SELECT tb_dmhd
_moi_sua=[X] _recno=RECNO()
_prompt="Thong tin chi tiet mot ban ghi"
PUSH KEY CLEAR
DO FORM (D_FORM+[f_dm1hd]) POP KEY ENDPROC ***************************************************** PROCEDURE tb_dmhd_chitiet SELECT tb_dmhd ENDPROC
Danh muc phong ban
* Program nhap 0them xoa sua cho danh muc khach hang * tham so neu la nhap moi
PROCEDURE tb_dmpb_Open
IF !USED("tb_dmpb")
use (D_DATA+[tb_dmpb]) ALIAS tb_dmpb IN 0
ELSE SELECT tb_dmpb ENDIF ENDPROC ********************************************** PROCEDURE tb_dmpb_init
* Khai bao bien
PUBLIC m.ma_pb,m.ten_pb, _Moi_sua,_prompt,_recno,_macu
&&_MOI_SUA de luu trang thai X- xem, S-sua,M-them moi
STORE "" to m.ma_pb,m.ten_pb,_prompt
ENDPROC
PROCEDURE tb_dmpb_F4
SELECT tb_dmpb
SCATTER memvar MEMO BLANK
_Moi_sua=[M]
_Prompt="Them mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1pb]) POP key ENDPROC ************************************************** PROCEDURE tb_dmpb_F3 SELECT tb_dmpb
SCATTER memvar Memo
_recno=RECNO() _macu=m.ma_pb _Moi_Sua=[S]
_prompt="Sua mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1pb]) POP key ENDPROC ************************************************ PROCEDURE tb_dmpb_F8 SELECT tb_dmpb
IF MESSAGEBOX("Co chac muon xoa?",4,"Chu y")=6 then DELETE USE IN cur_dmpb Pack IF !EOF() SKIP ENDIF
IF EOF() and !BOF()
SKIP -1 ENDIF ENDIF ENDPROC *************************************************** PROCEDURE tb_dmpb_ESC CLOSE ALL
* Dong bang bang nut
ENDPROC *************************************************** FUNCTION tb_dmpb_nhan SELECT tb_dmpb SET ORDER TO 1 tm=.F.
* Kiem tra ma trong
IF EMPTY(m.ma_pb) OR Empty(m.ten_pb) then
MESSAGEBOX("Ban da de trong truong ma hoac truong ten hoac truong ma nhom khach hang",0,"Chu y")
ELSE
* them cac kiem tra khac neu can * kiem tra ma trung
IF _Moi_sua=[M] then
IF SEEK(ALLTRIM(m.ma_pb))
MESSAGEBOX("Ma da co trong danh muc")
ELSE
* Cap nhat vao bang
APPEND blank
GATHER memvar memo
tm=.T.
ENDIF ELSE
IF SEEK(ALLTRIM(m.ma_pb)) and (_recno#RECNO())
MESSAGEBOX("Ma da co trong danh muc")
ELSE
GO _recno
GATHER memvar Memo
tm=.T. ENDIF ENDIF ENDIF return tm **************************************************** PROCEDURE tb_dmpb_huy ENDPROC ***************************************************** PROCEDURE tb_dmpb_Xem SELECT tb_dmpb _moi_sua=[X]
_recno=RECNO()
_prompt="Thong tin chi tiet mot ban ghi"
PUSH KEY CLEAR
DO FORM (D_FORM+[f_dm1pb]) POP KEY ENDPROC ***************************************************** PROCEDURE tb_dmpb_chitiet SELECT tb_dmpb ENDPROC
Phần code hiện danh mục người sử dụng
***************************************************************************** *************
* tb_dmts_F3 Sua or them moi tai san * tb_dmts_Nhan Luu nhan vien
* tb_dmts_F10 Sap xep danh muc tai san
SET SAFETY OFF SET DATE TO dmy CLOSE TABLES all
DO open_table WITH 'tb_dmnts','ma_nts'
DO open_table WITH 'tb_dmhd','so_hd'
DO open_table WITH 'tb_dmpb','ma_pb'
DO open_table WITH 'tb_dmnvon','ma_nvon'
DO open_table WITH 'tb_dmncc','ma_ncc'
DO open_table WITH 'tb_md_sd','ma_md_sd'
DO open_table WITH 'tb_dmts','ma_ts'
DO open_table WITH 'tb_tinh_trang','ma_tinh_tr'
PUBLIC m.ma_ts,m.ten_ts,m.ma_nts,m.so_hd,m.ma_ncc,m.Ma_pb,m.ma_md_sd,m.ma_tinh_tr,; m.Ngay_sd,m.Nguyen_gia,m.thoi_gian_sd,m.Nam_sx,m.nuoc_sx STORE "" TO m.ma_ts,m.ten_ts,m.ma_nts,m.so_hd,m.ma_ncc,m.Ma_pb,m.ma_md_sd,m.ma_tinh_tr,; m.Ngay_sd,m.Nguyen_gia,m.thoi_gian_sd,m.Nam_sx,m.nuoc_sx
ON KEY LABEL F3 DO tb_dmts_F3 with [S]
ON KEY LABEL F4 DO tb_dmts_F3 with [M]
ON KEY LABEL F8 DO tb_dmts_F8 ON KEY LABEL F9 DO tb_dmts_F9 ON KEY LABEL F10 do tb_dmts_F10 SELECT tb_dmts BROWSE FIELDS ma_ts :H = [Mã tài sản] :10,;
ten_ts :H = [Tên tài sản] :30,; ngay_sd :H = [Ngày sử dụng] :10,; nguyen_gia :H = [Nguyên giá] :15,;
thoi_gian_sd :H = [Thời gian sử dụng]:10,; nam_sx :H = [Năm sản xuất] :7,; nuoc_sx :H = [Nớc sản xuất] :15,; ma_nts :H = [Mã nhóm TS] :9,; ma_nvon :H = [Mã nguồn vốn] :9,; so_hd :H = [Số hợp đồng] :9,; ma_ncc :H = [Mã nhà cc] :9,; Ma_pb :H = [Mã phòng ban] :9,;
ma_md_sd :H = [Mã md sd] :9,;
ma_tinh_tr: H = [Mã tình trạng]:9;
FONT [VK sans serif],9;
FOR ALLTRIM(Ma_tinh_tr)='DSD' ;
TITLE "F3-Sua, F4-Them moi,F8-Thay doi tinh trang, F9-Loc,F10-Sap xep ESC-Thoat" NOAPPEND NOMODIFY NODELETE WINDOW WinBrw
ON KEY LABEL F3 ON KEY LABEL F4 ON KEY LABEL F8 ON KEY LABEL F9 ON KEY LABEL F10 USE IN tb_dmnts USE in tb_dmhd USE in tb_dmpb USE IN tb_dmnvon USE IN tb_dmncc USE IN tb_md_sd USE IN tb_dmts USE IN tb_tinh_trang IF USED([Temp7]) USE IN Temp7 ENDIF ************************************ PROCEDURE tb_dmts_F3 ************************************** PROCEDURE tb_dmts_F3 LPARAMETERS _M_S _InSELECT = SELECT() _Recno = RECNO() STORE _M_S TO _Moi_Sua
PUSH KEY CLEAR
IF _Moi_Sua = [S] AND RECNO() > RECCOUNT([tb_dmts])
POP KEY SELECT (_InSELECT) RETURN ENDIF SELECT tb_dmts IF _Moi_Sua = [M]
SCATTER MEMVAR MEMO BLANK ELSE
GO _Recno
SCATTER MEMVAR MEMO ENDIF
M.ma_ts_old = M.ma_ts M.Ngay_td = DATE()
M.User_Id = ALLTRIM(S_user)
_Caption = IIF(_Moi_Sua = [M],"Them moi mot TSCD","Sua chua thong tin tscd")
* Tim kiem ten tron danh muc
=SEEK(M.ma_ncc,[tb_dmncc])
M.Ten_ncc=IIF(FOUND([tb_dmncc]),tb_dmncc.ten_ncc,[]) =SEEK(M.ma_nts,[tb_dmnts])
M.Ten_nts=IIF(FOUND([tb_dmnts]),tb_dmnts.ten_nts,[]) =SEEK(M.ma_md_sd,[tb_md_sd])
M.Ten_md_sd=IIF(FOUND([tb_md_sd]),tb_md_sd.ten_md_sd,[]) =SEEK(M.ma_nvon,[tb_dmnvon])
M.Ten_nvon=IIF(FOUND([tb_dmnvon]),tb_dmnvon.ten_nvon,[]) =SEEK(M.ma_pb,[tb_dmpb])
M.Ten_pb=IIF(FOUND([tb_dmpb]),tb_dmpb.ten_pb,[]) =SEEK(M.ma_tinh_tr,[tb_tinh_trang])
M.tinh_trang=IIF(FOUND([tb_tinh_trang]),tb_tinh_trang.tinh_trang,[])
ON KEY LABEL F9 KEYBOARD CHR(23)
DO FORM (D_FORM + [f_dmts_F3]) NAME _SCX LINKED ON KEY LABEL F9 POP KEY SELECT (_InSelect) RETURN ************************************ PROCEDURE _Nhan FUNCTION tb_dmts_F3_Nhan PARAMETERS M_Nhan SELECT tb_dmts IF LASTKEY()= 27 OR M_Nhan <> 1 IF _Recno<=RECCOUNT([tb_dmts]) GO _Recno _SCX = "" ENDIF _SCX = "" RETURN .T. ELSE IF M_Nhan = 1
* Luu gia tri vao cac bang
* Truong hop them moi, cac cong viec gom luu vao bang dmtscd, logfile va bang theo doi
If _Moi_Sua = [M]
*Chuan bi cac gia tri ve thoi gian, nguoi su dung trong bang log file
M.Ngay_td = m.Ngay_sd
M.User_Id = alltrim(s_user) m.ma_tdoi='TMTS'
m.stt="01"
m.ngay_bd=m.ngay_sd m.Ma_tinh_tr='DSD'
* Ghi vao cac bang
SELECT tB_dmts
APPEND BLANK
GATHER MEMVAR memo FLUSH
UNLOCK IN tb_dmts
DO open_table WITH 'logfile','ma_ts'
SELECT logfile
APPEND BLANK
GATHER MEMVAR memo FLUSH
UNLOCK IN logfile
DO open_table WITH 'theo_doi','ma_ts'
SELECT theo_doi
APPEND BLANK
GATHER MEMVAR memo FLUSH
UNLOCK IN theo_doi
ELSE
*Truong hop sua chua thong tin trong bang danh muc tscd, phai ghi vao bang logfile
* va danh muc tscd
M.Ngay_td = DATE()
M.User_Id = alltrim(s_user) m.ma_tdoi='TDTT'
m.stt=stt_min('logfile',m.ma_ts) m.ngay_bd=m.ngay_sd
m.Ma_tinh_tr='DSD'
* Ghi thong tin vao bang dmts
SELECT tb_dmts
GO _Recno
GATHER MEMVAR memo FLUSH
UNLOCK IN tb_dmts
* Ghi thong tin vao bang logile
DO open_table WITH 'logfile','ma_ts'
SELECT logfile
APPEND BLANK
GATHER MEMVAR memo FLUSH UNLOCK IN logfile ENDIF _SCX = "" ENDIF ENDIF SELECT tb_dmts RETURN .T.
****************************************Function dua ra dc stt nho nhat theo ma_ts********
FUNCTION stt_min
PARAMETERS tablename,_ma_ts
DO open_table WITH tablename,'ma_ts' _max=0
SCAN FOR ma_ts=ALLTRIM(_ma_ts)
_max=IIF(_max<VAL(stt),VAL(stt),_max)
ENDSCAN
_max=_max+1
IF _MAX<10 then
RETURN ("0"+ALLTRIM(STR(_max)))
ELSE
RETURN ALLTRIM(STR(_max))
ENDIF RETURN .T. *!* *************************** PROCEDURE tb_dmts_F8 ************************************** PROCEDURE tb_dmts_F8 CLEAR _recno=RECNO() IF RECNO() > RECCOUNT([tb_dmts])
RETURN .T.
ENDIF
IF (MESSAGEBOX('Se dinh chi TSCD nay. Ban chac chan chu?',4+32+256,'Chu y') <> 6)
GO _Recno
RETURN ENDIF
_date=INPUTBOX(" Hay nhap ngay dinh chi su dung "," Nhap gia tri",DTOC(DATE()),15000,DTOC(DATE()),'0')
_date=CTOD(_date)
SELECT tb_dmts
GO _recno
SCATTER MEMVAR memo
m.ma_tinh_tr="KSD"
* Phai chuan bi tham so ngay thang va nguoi su dung them vao de ghi vao logfile
M.ngay_td = _date
M.User_Id = ALLTRIM(s_user) M.ma_tinh_tr="KSD"
M.stt=stt_min('logfile',m.ma_ts) m.ma_tdoi="DCTS"
* Thuc hien ghi vao logfile
DO open_table WITH 'logfile','ma_ts'
APPEND BLANK
GATHER MEMVAR memo
* Thuc hien ghi vao bang theo doi
DO open_table WITH 'theo_doi','ma_ts'
SELECT theo_doi
SCAN FOR ma_ts=ALLTRIM(m.ma_ts) _rn=RECNO()
ENDSCAN GO _rn
SCATTER MEMVAR memo
m.ngay_kt=_date
GATHER MEMVAR memo
* Cap nhat lai tinh trang vao bang dmts
SELECT tb_dmts GATHER MEMVAR RETURN .T. *!* ************************************ PROCEDURE tb_dmts_F9 ************************************** PROCEDURE tb_dmts_F9 PRIVATE _Form PUSH KEY
DO FORM (D_Form + [f_dmts_F9]) NAME _Form LINKED POP KEY
ENDPROC
*************** ************Nhan cua F9******************************
PARAMETERS _NhanHuy PRIVATE _key _key=".T." IF _NhanHuy <> 1 _Form = "" RETURN ENDIF _Form = "" SELECT tb_dmts
* Phan ten va ma, co chon lua nam trong hay bat dau
IF !EMPTY(ALLTRIM(M.ma_ts))
_key = "ma_ts = ALLTRIM(M.ma_ts)"
ENDIF
IF !EMPTY(ALLTRIM(M.ten_ts))
IF _c=1
_key = _key + ' AND ALLTRIM(M.ten_ts) $ ALLTRIM(ten_ts)'
ELSE
_key = _key + ' AND ten_ts =ALLTRIM(M.ten_ts)'
ENDIF ENDIF
* Phan ma cac bang ngoai lai
IF !EMPTY(ALLTRIM(M.Ma_nts))
_key = _key + ' AND Ma_nts=ALLTRIM(M.Ma_nts)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_nvon))
_key = _key + ' AND Ma_nvon=ALLTRIM(M.Ma_nvon)'
ENDIF
IF !EMPTY(ALLTRIM(M.so_hd))
_key = _key + ' AND So_hd=ALLTRIM(M.So_hd)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_ncc))
_key = _key + ' AND Ma_ncc=ALLTRIM(M.Ma_ncc)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_pb))
_key = _key + ' AND Ma_pb=ALLTRIM(M.Ma_pb)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_md_sd))
_key = _key + ' AND Ma_md_sd=ALLTRIM(M.Ma_md_sd)'
ENDIF
* Phan so sanh cac dieu kien <,>
IF !EMPTY(ALLTRIM(M.thoi_gian_sd))
_key = _key + ' AND thoi_gian_sd' + ptThoi_Gian_sd+'val(ALLTRIM(m.thoi_gian_sd))'
ENDIF
IF !EMPTY(ALLTRIM(M.Ngay_sd))
_key = _key + ' AND Ngay_sd' + ptNgay_sd+'ctoD(ALLTRIM(m.Ngay_sd))'
ENDIF
IF !EMPTY(ALLTRIM(M.Nguyen_gia))
_key = _key + ' AND Nguyen_gia' + ptNguyen_Gia+'val(ALLTRIM(m.Nguyen_gia))'
ENDIF
IF !EMPTY(ALLTRIM(M.Nam_sx))
_key = _key + ' AND Nam_sx' + ptNam_sx+'val(ALLTRIM(m.Nam_sx))'
ENDIF
GO TOP RETURN ENDPROC *!* ************************************ PROCEDURE tb_dmts_F10 ************************************** PROCEDURE tb_dmts_F10 PRIVATE _Form PUSH KEY
DO FORM (D_FORM + [f_dmts_F10.scx]) NAME _form linked POP KEY RETURN *****************************Nhan F10************************** PROCEDURE tb_dmts_F10_nhan PARAMETERS _N_H,_sx,_c IF _N_H=0 THEN _form="" RETURN ENDIF _Form=""
***** _sx Nguon cua Combobox, _c Nguon cua option button
SELECT tb_dmts
DO CASE
* Theo ma ts
CASE _sx = [1] AND _c=1
SET ORDER TO ma_ts ASCENDING CASE _sx = [1] AND _c=2
SET ORDER TO ma_ts DESCENDING
* Theo ten ts
CASE _sx = [2] AND _c=1
SET ORDER TO ten_ts ASCENDING CASE _sx = [2] AND _c=2