Tải bản đầy đủ (.pdf) (22 trang)

sáng kiến kinh nghiệm - ghép và chuyển tập tin

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 (210.81 KB, 22 trang )

Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

GHẫP HAI TP TIN *.DBF THNH TP TIN TH BA *.DBF
A . PHN M U
qun lý hc sinh bng mỏy tớnh, nh trng chỳng tụi s dng phn ln trờn FoxPro.
Hai tp tin qun lý c bn l KHOI*.DBF v HK*.DBF ( Chng hn : Hc k 1 qun lý
hc sinh Khi 10 cú hai tp tin KHOI10.DBF v HK110.DBF ) : Trong ú tp tin KHOI*.DBF
lu tr lý lch hc sinh v tp tin HK*.DBF lu tr im s ca hc sinh hc k 1 hoc hc
k 2 ca mt khi. Hai tp tin ny cú s records bng nhau v liờn kt vi nhau qua MAHS.
Sau khi cú kt qu thi hc k, nh trng cú yờu cu chn ra cỏc i tng hc sinh nh : hc
sinh gii hoc yu b mụn no ú cụng vic c thc hin nhanh chúng trờn tp tin d
liu, khụng phi lp trỡnh, chỳng tụi s dng chng trỡnh Ghộp hai tp tin *.DBF
vo vic ghộp hai tp tin ny li vi nhau cú c mt tp tin th ba, tp tin ny va lu tr
lý lch hc sinh va lu tr im s trong mt hc k ca hc sinh.
Chng trỡnh Ghộp hai tp tin *.DBF c chỳng tụi vit vo cui thỏng 8 nm
1995, khi m mỏy tớnh trng chỳng tụi b Virus, cỏc d liu Tuyn Sinh 10 trờn cng mỏy
386 b mt sch, ch cũn lu tr trờn cỏc a d phũng 1M4 v ch cú th c cỏc d liu ny
trờn Foxproln v trờn cỏc a mm. Yờu cu chia lp Khi 10 vo u nm hc gn k, buc
chỳng tụi phi ghộp hai tp tin THISINH.DBF v NHAPDIEM.DBF thnh mt tp tin cú c
s d liu qun lý. V t ú chng trỡnh Ghộp hai tp tin *.DBF ó giỳp chỳng tụi vt
qua khú khn ang gp phi.
Ngoi vic qun lý hc sinh trờn FoxPro, mt s d liu cũn c nhp trờn Excel, vic
qun lý d liu trờn bng tớnh Excel giỳp chỳng tụi d sa cha, d copy hoc ct, dỏn cỏc mu
tin. Excel h tr chỳng tụi trong vic Sort d liu cú th chn ra cỏc i tng hc sinh theo
yờu cu ca nh trng. Vo thỏng 7 nm 1998, chỳng tụi nhp d liu xột tuyn hc sinh 10
bng Excel. n thỏng 8 nm 1998 chỳng tụi cn chuyn d liu ny sang s dng cỏc chng
trỡnh qun lý hc sinh ó c vit sn t nhiu nm trc ú trờn Foxpro. Khú khn m
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

chỳng tụi vng phi l khi Save tp tin *.XLS vi kiu *.DBF thỡ cỏc Fonts 2 bytes ca VNI
khụng c gi nguyờn m b chuyn sang mt s ký t l. khc phc tỡnh trng ny chỳng


tụi phi Save tp tin *.XLS sang tp tin *.TXT , ri t tp tin *.TXT chỳng tụi dựng chng
trỡnh Chuyn tp tin *.XLS thnh tp tin *.DBF to tp tin *.DBF v t ú chng trỡnh
ny ra i.
Sau nhiu nm s dng khụng gp li, chỳng tụi xin hõn hnh c gii thiu hai
chng trỡnh ny, vi hy vng rng, cú th h tr phn nh vic qun lý hc sinh bng Foxpro
m mt s trng ang s dng.

Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

A. Chng trỡnh 1 :
GHẫP HAI TP TIN *.DBF THNH TP TIN TH BA *.DBF
I.Hng dn s dng :
Hai tp tin *.DBF phi cú cựng records v ch cú duy nht mt Field cú tờn chung
( nh MAHS chng hn ), Field ny dựng ghộp hai tp tin nờn phi cú chung d liu
liờn kt (Relation).
Khi yờu cu m tp tin *.DBF th nht bn phi m tp tin ch trc, sau ú bn
m tp tin *.DBF th hai.
Khi yờu cu cho tờn tp tin xut, bn nhp tờn tp tin th ba l tp tin ghộp ca
hai tp tin ó c chn trc ú.
II.S lc thut toỏn ca chng trỡnh ghộp hai tp tin *.DBF thnh tp tin th ba *.DBF:
M tp tin *.DBF (TT1.DBF) th nht SELE 1 v m tp tin *.DBF
(TT2.DBF) th hai SELE 2.
COPY STRUCTURE EXTENDED tp tin TT1.DBF n TAM1.DBF SELE 1
v tp tin TT2.DBF n TAM2.DBF SELE 2 .
M TAM1.DBF, mang d liu t TAM2.DBF vo TAM1.DBF v tỡm hai
records ging nhau xúa record th hai ( nh MAHS chng hn ). Khi ú cỏc records
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

trong TAM1.DBF theo th t l tờn cỏc fields ca TT1.DBF v TT2.DBF ( khụng cú 2
records cú FIELD_NAME trựng nhau ).

M tp tin *.DBF (TT1.DBF) th nht SELE 1 v m tp tin *.DBF
(TT2.DBF) th hai SELE 2 v sp xp 2 tp tin ny theo Field cú tờn chung ( nh MAHS
chng hn ). Sau ú chộp TT1.DBF (cú sp xp theo mó chung) n TAM3.DBF v chộp
TT2.DBF (cú sp xp theo mó chung) n TAM4.DBF.
To tp tin xut ( tp tin &KQ) t tp tin cú cu trỳc c bit TAM1.DBF v
m tp tin &KQ, chộp d liu t tp tin TAM3.DBF vo &KQ.
SELE 1 m &KQ v SELE 2 m TAM4.DBF. Sau ú ly tun t cỏc records
ca TAM4.DBF chộp vo &KQ.
M &KQ v cho bn kim tra bng lnh Brow.
III. Chng trỡnh ghộp hai tp tin *.DBF thnh tp 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
*
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

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"
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

USE?
@13,11 SAY " BAN DA MO TAP TIN THU HAI : " +ALLT(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)
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

* BUOC 5 : KIEM TRA HAI RECORDS GIONG NHAU DE XOA 1 RECORD O
TAM2 :
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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.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
* BUOC 7 : TAO FILE GHEP :
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

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
ERASE &TAM3
ERASE &TAM4
ERASE &SX1
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

ERASE &SX2
SET TALK ON
SET SAFE ON
RETURN
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

B. Chng trỡnh 2 :
Chuyn tp tin *.XLS thnh tp tin *.DBF
(XLSTODBF.PRG)
I. Hng dn s dng :
Tp tin *.XLS trc ht bn Save As di dng *.TXT v bn phi nh tờn cỏc
Fields trong tp tin ny nhp trong lỳc chy chng trỡnh Chuyn tp tin *.XLS thnh
tp tin *.DBF (XLSTODBF.PRG).

Sau ú bn cho chy chng trỡnh XLSTODBF.PRG v tun t nhp tờn cỏc
Fields tng ng.
Vỡ l d liu kiu *.TXT nờn tm thi chỳng tụi cho tp tin *.DBF cú
Field_Type l Character v Field_Len l 40 nờn mun s dng tp tin ny, bn phi sa li
cu trỳc File (MODIFY STRUCTURE) nh ý bn .
Tp tin h tr chng trỡnh ny cú tờn THU.DBF cú cu trỳc :
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF


Field Field Name Type Width Dec Index Collate
1 TACH Character 254
** Total ** 255

Nu bn mun chy chng trỡnh XLSTODBF.PRG bn hóy to trc tp tin
THU.DBF trong th mc ca bn v sa li ng dn ( ng dn ca chng trỡnh l
C:\SKKN) ca chng trỡnh XLSTODBF.PRG
II. S lc thut toỏn ca chng trỡnh XLSTODBF.PRG:
M tp tin THU.DBF.
Chộp d liu n THU.DBF t tp tin *.TXT bi lnh APPEND FROM *.TXT
DELIMITED
m s ký t TAB ( mó 9 bờn bng ASCII ) + 1 l s fields ca tp tin *.DBF
To tp tin TAM1.DBF bi lnh COPY STRUCTURE EXTENDED, xúa cỏc
records c, chộp tờn cỏc records mi va c nhp t bn phớm, kiu cỏc fields
(Field_Type) mc nh l C rng cỏc field ( Fiel_Len) mc nh l 40.
To tp tin TAM2.DBF t tp tin TAM1.DBF v m tp tin TAM2.DBF.
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

Sele 1 m tp tin THU.DBF, ct mi records theo tng Field
ca THU.DBF v chộp vo tp tin TAM2.DBF SELE 2 record tng ng sau lnh
APPEND BLANK. Quỏ trỡnh lp li cho n khi con tr i n record cui cựng ca
THU.DBF v chộp cỏc fields ca record ny vo record cui cựng ca tp tin TAM2.DBF .
Cui cựng l chộp d liu t tp tin TAM2.DBF n tp tin
*.DBF m bn t tờn lỳc u tiờn chy chng trỡnh XLSTODBF.PRG bi lnh COPY
TO.
III. Chng trỡnh XLSTODBF.PRG:
* PROGRAM : XLSTODBF.PRG (Chuyn tp tin *.XLS thnh tp tin *.DBF)
* NGUOI VIET : PHAM VAN LUAT
* NGAY VIET : Thỏng 08/1998

* DON VI : DOC BINH KIEU
*
SET SAFE OFF
SET TALK OFF
SET CONS OFF
CLOS ALL
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

CLEA
FILENGUON= "C:\"+SPACE(30)
FILEXUAT= "C:\"+SPACE(30)
* BUOC 1 : NGI S DNG NHP TấN TP TIN *.TXT CN CHUYN THNH
TP TIN *.DBF V NHP TấN TP TIN *.DBF CN XUT :
@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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

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)
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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

SELE 1
GO TOP
DO WHILE !EOF()

A=""
SOLAN=0
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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

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
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

COPY TO &FIELXUAT

* BUOC 4 : TR LI MễI TRNG :
CLOSE ALL
ERASE C:\SKKN\TAM1.DBF
ERASE C:\SKKN\TAM2.DBF
SET TALK ON
SET SAFE ON
SET CONS ON
RETURN
Chửụng trỡnh : 1) Gheựp hai taọp tin *.DBF vaứ 2) Chuyeồn taọp tin *.XLS thaứnh taọp tin *.DBF

C. XC MINH CA CC GIO VIấN Cể S DNG CC CHNG
TRèNH TRấN :

STT H v tờn Chc v Ch ký

1


ễ. Nguyn Vn
Vit Hựng

Giỏo viờn Toỏn c
Binh Kiu ,
C nhõn Tin Hc (h
Cao ng)


2

ễ. Trn Vn Hựng


Giỏo viờn Lý c Binh
Kiu ,
H tr cụng tỏc dy v
hc cho BGH



×