Tải bản đầy đủ (.doc) (15 trang)

Ghép tập tin DPF và chuyển tập tin XLS thành tập tin DPF.DOC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (98.99 KB, 15 trang )

Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
A.PHẦN MỞ ĐẦU
Để quản lý học sinh bằng máy tính, nhà trường chúng tôi sử dụng phần lớn trên
FoxPro. Hai tập tin quản lý cơ bản là KHOI*.DBF và HK*.DBF ( Chẳng hạn : Ở Học kỳ 1
để quản lý học sinh Khối 10 có hai tập tin KHOI10.DBF và HK110.DBF ) : Trong đó tập tin
KHOI*.DBF lưu trữ lý lòch học sinh và tập tin HK*.DBF lưu trữ điểm số của học sinh ở học
kỳ 1 hoặc học kỳ 2 của một khối. Hai tập tin này có số records bằng nhau và liên kết với
nhau qua MAHS. Sau khi có kết quả thi học kỳ, nhà trường có yêu cầu chọn ra các đối
tượng học sinh như : học sinh giỏi hoặc yếu bộ môn nào đó … Để công việc được thực hiện
nhanh chóng trên tập tin dữ liệu, không phải lập trình, chúng tôi sử dụng chương trình
“Ghép hai tập tin *.DBF “ vào việc ghép hai tập tin này lại với nhau để có được một tập
tin thứ ba, tập tin này vừa lưu trữ lý lòch học sinh vừa lưu trữ điểm số trong một học kỳ của
học sinh.
Chương trình “ Ghép hai tập tin *.DBF “ được chúng tôi viết vào cuối tháng 8 năm
1995, khi mà máy tính trường chúng tôi bò Virus, các dữ liệu Tuyển Sinh 10 trên ổ cứng
máy 386 bò mất sạch, chỉ còn lưu trữ trên các đóa dự phòng 1M4 và chỉ có thể đọc các dữ
liệu này trên Foxproln và trên các đóa mềm. Yêu cầu chia lớp Khối 10 vào đầu năm học
gần kề, buộc chúng tôi phải ghép hai tập tin THISINH.DBF và NHAPDIEM.DBF thành
một tập tin để có cơ sở dữ liệu quản lý. Và từ đó chương trình “ Ghép hai tập tin *.DBF “
đã giúp chúng tôi vượt qua khó khăn đang gặp phải.
Ngoài việc quản lý học sinh trên FoxPro, một số dữ liệu còn được nhập trên Excel,
việc quản lý dữ liệu trên bảng tính Excel giúp chúng tôi dễ sửa chữa, dễ copy hoặc cắt, dán
các mẫu tin. Excel hỗ trợ chúng tôi trong việc Sort dữ liệu để có thể chọn ra các đối tượng
học sinh theo yêu cầu của nhà trường. Vào tháng 7 năm 1998, chúng tôi nhập dữ liệu xét
tuyển học sinh 10 bằng Excel. Đến tháng 8 năm 1998 chúng tôi cần chuyển dữ liệu này
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 1
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
sang sử dụng các chương trình quản lý học sinh đã được viết sẵn từ nhiều năm trước đó
trên Foxpro. Khó khăn mà chúng tôi vướng phải là khi Save tập tin *.XLS với kiểu *.DBF


thì các Fonts 2 bytes của VNI không được giữ nguyên mà bò chuyển sang một số ký tự lạ.
Để khắc phục tình trạng này chúng tôi phải Save tập tin *.XLS sang tập tin *.TXT , rồi từ
tập tin *.TXT chúng tôi dùng chương trình “Chuyển tập tin *.XLS thành tập tin *.DBF “ để tạo tập
tin *.DBF và từ đó chương trình này ra đời.
Sau nhiều năm sử dụng không gặp lỗi, chúng tôi xin hân hạnh được giới thiệu hai
chương trình này, với hy vọng rằng, có thể hỗ trợ phần nhỏ việc quản lý học sinh bằng
Foxpro mà một số trường đang sử dụng.
Xin chân thành cảm ơn.
Tác giả
Phạm Văn Luật
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 2
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
B. Chương trình 1 :
GHÉP HAI TẬP TIN *.DBF THÀNH TẬP TIN THỨ BA *.DBF
I.Hướng dẫn sử dụng :
• Hai tập tin *.DBF phải có cùng records và chỉ có duy nhất một Field có tên chung ( như
MAHS chẳng hạn ), Field này dùng để ghép hai tập tin nên phải có chung dữ liệu để
liên kết (Relation).
• Khi yêu cầu mở tập tin *.DBF thứ nhất bạn phải mở tập tin chủ trước, sau đó bạn mở tập
tin *.DBF thứ hai.
• Khi yêu cầu cho tên tập tin xuất, bạn nhập tên tập tin thứ ba là tập tin ghép của hai tập
tin đã được chọn trước đó.
II.Sơ lược thuật toán của chương trình ghép hai tập tin *.DBF thành tập tin thứ ba *.DBF:
• Mở tập tin *.DBF (TT1.DBF) thứ nhất ở SELE 1 và mở tập tin *.DBF (TT2.DBF) thứ
hai ở SELE 2.
• COPY STRUCTURE EXTENDED tập tin TT1.DBF đến TAM1.DBF ở SELE 1 và tập
tin TT2.DBF đến TAM2.DBF ở SELE 2 .
• Mở TAM1.DBF, mang dữ liệu từ TAM2.DBF vào TAM1.DBF và tìm hai records giống

nhau để xóa record thứ hai ( như MAHS chẳng hạn ). Khi đó các records trong
TAM1.DBF theo thứ tự là tên các fields của TT1.DBF và TT2.DBF ( không có 2
records có FIELD_NAME trùng nhau ).
• Mở tập tin *.DBF (TT1.DBF) thứ nhất ở SELE 1 và mở tập tin *.DBF (TT2.DBF) thứ
hai ở SELE 2 và sắp xếp 2 tập tin này theo Field có tên chung ( như MAHS chẳng hạn ).
Sau đó chép TT1.DBF (có sắp xếp theo mã chung) đến TAM3.DBF và chép TT2.DBF
(có sắp xếp theo mã chung) đến TAM4.DBF.
• Tạo tập tin xuất ( tập tin &KQ) từ tập tin có cấu trúc đặc biệt TAM1.DBF và mở tập
tin &KQ, chép dữ liệu từ tập tin TAM3.DBF vào &KQ.
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 3
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
• Ở SELE 1 mở &KQ và ở SELE 2 mở TAM4.DBF. Sau đó lấy tuần tự các records của
TAM4.DBF chép vào &KQ.
• Mở &KQ và cho bạn kiểm tra bằng lệnh Brow.
III. Chương trình ghép hai tập tin *.DBF thành tập tin thứ ba *.DBF :
* PROGRAM : GHEP2DBF.PRG (GHÉP 2 FILES *.DBF)
* NGUOI VIET : PHAM VAN LUAT
* NGAY VIET : 24 & 25/08/1995
* DON VI : DOC BINH KIEU
*
SET TALK OFF
SET SAFE OFF
SET CONS OFF
CLEA
SELE 1
@10,12 SAY "HAY MO TAP TIN THU NHAT DE KET NOI "
WAIT WIND" AN PHIM BAT KY DE TIEP TUC"
USE?

@11,11 SAY " BAN DA MO TAP TIN THU NHAT : " +ALLT(DBF())
STOR LEFT(DBF(),RAT("\",DBF()))+SPACE(10) TO KQ
STOR DBF() TO FILE1
SELE 2
@12,12 SAY "HAY MO TAP TIN THU HAI DE KET NOI "
WAIT WIND" AN PHIM BAT KY DE TIEP TUC"
USE?
@13,11 SAY " BAN DA MO TAP TIN THU HAI : " +ALLT(DBF())
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 4
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
STOR DBF() TO FILE2
@14,12 SAY 'CHO TAP TIN XUAT ' GET KQ
READ
CLOS ALL
SET DEFA TO LEFT(DBF(),RAT("\",DBF()))
* BUOC 1 : CHUAN BI DOC CAC FIELDS FILE THU 2 :
SELE 2
USE &FILE2
SOFI=FCOU()
DIME TENF(SOFI)
FOR I=1 TO SOFI
TENF(I)=FIEL(I)
ENDFOR
* BUOC 2 : DOC CAC FIELDS FILE THU 2 RA FILE TAM2:
STORE LEFT(DBF(),RAT("\",DBF()))+"TAM2.DBF" TO TAM2
COPY STRU EXTE TO &TAM2
* BUOC 3 : DOC CAC FIELDS FILE THU 1 RA FILE TAM1:
SELE 1

USE &FILE1
STORE LEFT(DBF(),RAT("\",DBF()))+"TAM1.DBF" TO TAM1
COPY STRU EXTE TO &TAM1
USE &TAM1
SOFA=RECC()
* BUOC 4 : CHEP CAC RECORDS FILE TAM2 VAO TAM1 :
APPE FROM &TAM2
* BUOC 5 : KIEM TRA HAI RECORDS GIONG NHAU DE XOA 1 RECORD O TAM2 :
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 5
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
FOR KIEMTRA=1 TO SOFA
GO KIEMTRA
KT=FIELD_NAME
LOCA FOR (FIELD_NAME=KT).AND.(RECN()<>KIEMTRA)
IF FOUND()
GO KIEMTRA
STORE KT TO KTHK
DELE
ENDIF
ENDFOR
PACK
* BUOC 6 : SAP XEP FILE1 VÀ FIEL2 THEO MA CHUNG VÀ CHEP DU LIEU DA
SAP XEP DEN TAM3.DBF VA TAM4.DBF
SELE 2
USE &FILE2
STORE LEFT(DBF(),RAT("\",DBF()))+"SX2.IDX" TO SX2
INDE ON &KTHK TO &SX2
STORE LEFT(DBF(),RAT("\",DBF()))+"TAM4.DBF" TO TAM4

COPY TO &TAM4
USE &TAM4
SELE 1
USE &FILE1
STORE LEFT(DBF(),RAT("\",DBF()))+"SX1.IDX" TO SX1
INDE ON &KTHK TO &SX1
STORE LEFT(DBF(),RAT("\",DBF()))+"TAM3.DBF" TO TAM3
COPY TO &TAM3
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 6
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
* BUOC 7 : TAO FILE GHEP :
CREA &KQ FROM &TAM1
USE &KQ
* BUOC 8 : CHEP CAC RECORDS O FILE1 VAO FILE XUAT :
APPE FROM &TAM3
* BUOC 9 : CHEP CAC RECORDS O FILE2 VAO FILE XUAT :
FOR I=1 TO SOFI
STT=0
STOR TENF(I) TO LUAT
FOR T=1 TO RECC()
SELE 2
GO T
TAM=&LUAT
SELE 1
GO T
REPL &LUAT WITH TAM
ENDFOR
ENDFOR

* BUOC 10 : CHO BAN XEM FILE XUAT :
CLOS ALL
USE &KQ
BROW
* BUOC 11 : TRA LAI MOI TRUONG
CLOSE ALL
ERASE &TAM1
ERASE &TAM2
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 7
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
ERASE &TAM3
ERASE &TAM4
ERASE &SX1
ERASE &SX2
SET TALK ON
SET SAFE ON
RETURN
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 8
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
C. Chương trình 2 :
Chuyển tập tin *.XLS thành tập tin
*.DBF
(XLSTODBF.PRG)
I. Hướng dẫn sử dụng :
• Tập tin *.XLS trước hết bạn Save As dưới dạng *.TXT và bạn phải nhớ tên các Fields
trong tập tin này để nhập trong lúc chạy chương trình Chuyển tập tin *.XLS thành tập

tin *.DBF (XLSTODBF.PRG).
• Sau đó bạn cho chạy chương trình XLSTODBF.PRG và tuần tự nhập tên các Fields
tương ứng.
• Vì là dữ liệu kiểu *.TXT nên tạm thời chúng tôi cho tập tin *.DBF có Field_Type là
Character và Field_Len là 40 nên muốn sử dụng tập tin này, bạn phải sửa lại cấu trúc
File (MODIFY STRUCTURE) như ý bạn .
• Tập tin hỗ trợ chương trình này có tên THU.DBF có cấu trúc :
Field Field Name Type Width Dec Index Collate
1 TACH Character 254
** Total ** 255
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 9
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
Nếu bạn muốn chạy chương trình XLSTODBF.PRG bạn hãy tạo trước tập tin THU.DBF
trong thư mục của bạn và sửa lại đường dẫn ( đường dẫn của chương trình là C:\SKKN) của
chương trình XLSTODBF.PRG
II. Sơ lược thuật toán của chương trình XLSTODBF.PRG:
• Mở tập tin THU.DBF.
• Chép dữ liệu đến THU.DBF từ tập tin *.TXT bởi lệnh APPEND FROM *.TXT
DELIMITED
• Đếm số ký tự TAB ( mã 9 bên bảng ASCII ) + 1 là số fields của tập tin *.DBF
• Tạo tập tin TAM1.DBF bởi lệnh COPY STRUCTURE EXTENDED, xóa các records cũ,
chép tên các records mới vừa được nhập từ bàn phím, kiểu các fields (Field_Type) mặc
đònh là “C” độ rộng các field ( Fiel_Len) mặc đònh là 40.
• Tạo tập tin TAM2.DBF từ tập tin TAM1.DBF và mở tập tin TAM2.DBF.
• Sele 1 mở tập tin THU.DBF, cắt mỗi records theo từng Field của THU.DBF và chép vào
tập tin TAM2.DBF ở SELE 2 ở record tương ứng sau lệnh APPEND BLANK. Quá trình
lặp lại cho đến khi con trỏ đi đến record cuối cùng của THU.DBF và chép các fields của
record này vào record cuối cùng của tập tin TAM2.DBF .

• Cuối cùng là chép dữ liệu từ tập tin TAM2.DBF đến tập tin *.DBF mà bạn đặt tên lúc
đầu tiên chạy chương trình XLSTODBF.PRG bởi lệnh COPY TO.
III. Chương trình XLSTODBF.PRG:
* PROGRAM : XLSTODBF.PRG (Chuyển tập tin *.XLS thành tập tin *.DBF)
* NGUOI VIET : PHAM VAN LUAT
* NGAY VIET : Tháng 08/1998
* DON VI : DOC BINH KIEU
*
SET SAFE OFF
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 10
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
SET TALK OFF
SET CONS OFF
CLOS ALL
CLEA
FILENGUON= "C:\"+SPACE(30)
FILEXUAT= "C:\"+SPACE(30)
* BUOC 1 : NGƯỜI SỬ DỤNG NHẬP TÊN TẬP TIN *.TXT CẦN CHUYỂN THÀNH TẬP
TIN *.DBF VÀ NHẬP TÊN TẬP TIN *.DBF CẦN XUẤT :
@10,12 SAY " CHO BIET TAP TIN *.TXT CAN CHUYEN THANH *.DBF" GET
FILENGUON
@11,12 SAY " CHO BIET TAP TIN *.DBF CAN XUAT " GET FILEXUAT
READ
STOR ALLT(FILENGUON) TO FIELNGUON
STOR ALLT(FILEXUAT) TO FIELXUAT
USE C:\SKKN\THU
ZAP
APPE FROM &FIELNGUON DELI

DEM=0
FOR I=1 TO LEN(ALLT(TACH))
IF SUBS(ALLT(TACH),I,1)="" && ASC(" ") = 9 ( Phím Tab )
DEM=DEM+1
ENDIF
ENDFOR
* BUOC 2 : NGUOI SU DUNG NHAP TEN TUNG FIELD TUONG UNG :
DIME TENFIEL(DEM+1)
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 11
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
STOR SPAC(10) TO TENFIEL
FOR I=1 TO DEM+1
@1,5 SAY " CHO TEN FIELD "+ ALLT(STR(I)) GET TENFIEL(I)
READ
ENDFOR
* BUOC 3 : TAO TAP TIN CHO NGUOI SU DUNG :
COPY STRU EXTE TO C:\SKKN\TAM1.DBF
USE C:\SKKN\TAM1.DBF
ZAP
FOR I=1 TO DEM+1
APPE BLANK
REPL FIELD_NAME WITH TENFIEL(I)
REPL FIELD_TYPE WITH "C"
REPL FIELD_LEN WITH 40
ENDFOR
CREA C:\SKKN\TAM2 FROM C:\SKKN\TAM1
* CHEP TU FILE *.TXT SANG *.DBF :
SELE 1

USE C:\SKKN\THU
SELE 2
USE C:\SKKN\TAM2
SELE 1
GO TOP
DO WHILE !EOF()
A=""
SOLAN=0
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 12
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
SELE 2
APPE BLANK
SELE 1
FOR I=1 TO LEN(ALLT(TACH))
IF SUBS(ALLT(TACH),I,1)<>" "
A=A+SUBS(ALLT(TACH),I,1)
CHUOI=A
ELSE
SOLAN=SOLAN+1
CHUOI=A
SELE 2
STOR FIEL(SOLAN) TO TEN
REPL &TEN WITH CHUOI
A=""
ENDIF
SELE 2
STOR FIEL(SOLAN+1) TO TEN
REPL &TEN WITH CHUOI

SELE 1
ENDFOR
SKIP
ENDDO
SELE 2
COPY TO &FIELXUAT
* BUOC 4 : TRẢ LẠI MÔI TRƯỜNG :
CLOSE ALL
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 13
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
ERASE C:\SKKN\TAM1.DBF
ERASE C:\SKKN\TAM2.DBF
SET TALK ON
SET SAFE ON
SET CONS ON
RETURN
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 14
Chương trình : 1) Ghép hai tập tin *.DBF và 2) Chuyển tập tin *.XLS thành tập tin *.DBF
D.XÁC MINH CỦA CÁC GIÁO VIÊN CÓ SỬ DỤNG CÁC CHƯƠNG TRÌNH TRÊN :
STT Họ và tên Chức vụ Chữ ký
1 Ô. Nguyễn Văn Việt Hùng
Giáo viên Toán Đốc Binh Kiều ,
Cử nhân Tin Học (hệ Cao Đẳng)
2 Ô. Trần Văn Hùng
Giáo viên Lý Đốc Binh Kiều ,
Hỗ trợ công tác dạy và học cho

BGH
____________________________________________________________________________________________
Người viết : Phạm Văn Luật – Giáo viên Toán Trường THPT Đốc Binh Kiều – Cai Lậy – Tiền Giang
Trang 15

×