Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở ở vùng làm việc khác.. Các vùng làm việc của FoxPro Từ trước cho đến nay chúng ta chỉ làm việc với một vùng của Foxpro nên khi m
Trang 1TRƯỜNG CAO ĐẲNG SƯ PHẠM QUẢNG TRỊ
KHOA CÔNG NGHỆ THÔNG TIN
Trang 21 Định vùng làm việc và gán bí danh
2 Cập nhật từ một tệp CSDL khác
3 Kết nối hai tệp CSDL
4 Thiết lập mối liên kết giữa nhiều tệp CSDL
5 Đóng các tệp CSDL đang mở
Chương 9 Thao tác với nhiều tệp CSDL
Trang 31 Định vùng làm việc và gán bí danh
1.1 Các vùng làm việc của FoxPro.
1.2 Mở tệp trên một vùng làm việc bất kỳ và gán bí danh.
1.3 Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở ở vùng làm việc khác.
Chương 9 Thao tác với nhiều tệp CSDL
Trang 41 Định vùng làm việc và gán bí danh
1.1 Các vùng làm việc của FoxPro
Từ trước cho đến nay chúng ta chỉ làm việc với một vùng của Foxpro nên khi mở tệp CSDL cũng đồng nghĩa với việc đóng tệp CSDL đang mở
Thực tế Foxpro có 25 vùng làm việc được đặt tên như sau:
Dùng số: Từ 1 đến 25
Dùng ký tự: 10 vùng làm việc đầu tiên có tên bằng số từ 1 đến 10 hoặc
bằng ký tự từ A đến J
Để chọn vùng làm việc ta dùng lệnh
SELECT <Tên vùng>
Ví dụ: SELE C
hoặc
SELE 15
Chương 9 Thao tác với nhiều tệp CSDL
Trang 51 Định vùng làm việc và gán bí danh
1.2 Mở tệp trên một vùng làm việc bất kỳ và gán bí danh
a Mở tệp trên vùng làm việc
SELECT <Tên vùng>
USE <tệp CSDL>
b Gán bí danh
SELECT <Tên vùng>
USE <tệp CSDL> ALIAS <bí danh>
<bí danh>: Do người sử dụng tự đặt nhưng phải tuân thủ hai điều sau:
* Theo đúng luật đặt tên trường dữ liệu
* Tên không thể là các ký tự từ A đến J
USE BLUONG ALIAS BL
Chương 9 Thao tác với nhiều tệp CSDL
Trang 61 Định vùng làm việc và gán bí danh
1.3 Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở ở vùng làm việc khác.
* Tệp hiện thời: <trường> như đã dùng từ trước đến nay
* Tệp ở vùng làm việc khác
<Tên vùng>.<trường>
<Bí danh>.<trường>
Chú ý rằng việc di chuyển con trỏ bản ghi chỉ thực hiện được đối với tệp hiện thời chứ không làm đưọc với tệp đang mở trên vùng khác, trừ dùng lệnh SET RELATION
USE HSCB ALIAS HS
SELE 1
? HSL
? HS.HSL (hoặc C.HSL)
Chương 9 Thao tác với nhiều tệp CSDL
Trang 72 Cập nhật từ một tệp CSDL khác
2.1 Bổ sung các bản ghi từ một tệp CSDL khác.
2.2 Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác.
Chương 9 Thao tác với nhiều tệp CSDL
Trang 82 Cập nhật từ một tệp CSDL khác
2.1 Bổ sung các bản ghi từ một tệp CSDL khác
Khi hai tệp CSDL có cùng chung cấu trúc tệp hay có một số trường trùng nhau về cấu trúc ta có thể bổ sung các bản ghi của tệp này sang tệp kia bằng cách sau:
Tệp muốn bổ sung được mở ở vùng hiện thời
Tệp chứa các bản ghi để bổ sung ở trạng thái đóng
Sử dụng lệnh:
APPEND FROM <tệp CSDL> [FOR <btL>][FIELDS <Ds trường>]
Chương 9 Thao tác với nhiều tệp CSDL
Trang 92 Cập nhật từ một tệp CSDL khác
2.1 Bổ sung các bản ghi từ một tệp CSDL khác
Giải thích:
Nếu có tuỳ chọn FOR <btL> thì chỉ những bản ghi thỏa mãn <btL> mới
được bổ sung
Nếu có tuỳ chọn FIELDS <Ds trường> thì các bản ghi được bổ sung vào
tệp hiện thời theo các trường được liệt kê trong danh sách Ngược lại các bản ghi được bổ sung vào tệp hiện thời theo tất cả các trường của nó trùng tên với tệp hiện thời
Ví dụ:USE HSCB
APPEND FROM HS1 FOR HSL>3
APPEND FROM HS1 FIELD MSCB, HD, TEN,HSL
Chương 9 Thao tác với nhiều tệp CSDL
Trang 102 Cập nhật từ một tệp CSDL khác
2.2 Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác
Thông thường khi sửa đổi dữ liệu nhiều, người ta sẽ chuẩn bị dữ liệu sửa đổi trên một tệp khác Sau đó sẽ dùng tệp đó để sửa trên tệp hiện thời bằng lệnh:
UPDATE ON <khoá> FROM <bí danh> REPLACE <trường 1> WITH
<bt1>[,<trường 2> WITH <bt2> ] [ FOR <btL>]
Giải thích: Tệp chứa dữ liệu sửa đổi được mở trên vùng làm việc khác với <bí danh> và chỉ số theo <khoá> cập nhật Tệp cần sửa đổi được mở ở vùng hiện thời
và cũng được chỉ số theo <khoá> cập nhật Với những bản ghi của hai tệp có cùng
giá trị khoá thì việc cập nhật được tiến hành như mô tả trên REPLACE Nếu có tuỳ chọn FOR <btL> thì chỉ những bản ghi thoả mãn <btL> mới được cập nhật.
Chú ý: Trường <khóa> của cả hai tệp phải trùng nhau về cấu trúc
Chương 9 Thao tác với nhiều tệp CSDL
Trang 112 Cập nhật từ một tệp CSDL khác
2.2 Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác
Ví dụ:
SELE 3
USE LMOI ALIAS LM INDE ON MSCB TO T1
SELE 1
INDE ON MSCB TO T2
Chương 9 Thao tác với nhiều tệp CSDL
Trang 123 Kết nối hai tệp CSDL
Với hai tệp CSDL có mối quan hệ logic với nhau ta có thể kết nối chúng
bằng lệnh sau:
JOIN WITH <bí danh> TO <tệp KQ> FOR <btL> [FIELDS <dstrường>]
Điều kiện: Một tệp được mở trên vùng làm việc khác với <bí danh>, tệp còn
lại được mở trên vùng hiện thời
Giải thích: Lệnh sẽ tiến hành kết nối mỗi bản ghi của tệp hiện thời lần lượt
với từng bản ghi của tệp <bí danh> thỏa mãn <btL> và ghi vào <tệp KQ> Nếu
có tùy chọn FIELDS <ds trường> thì <tệp KQ> bao gồm những trường được liệt kê trong danh sách và theo thứ tự này Nếu không có tùy chọn đó thì <tệp
KQ> bao gồm tất cả các trường của tệp hiện thời và tất cả các trường của tệp
<bí danh> không trùng tên với các trường của tệp hiện thời.
Chương 9 Thao tác với nhiều tệp CSDL
Trang 133 Kết nối hai tệp CSDL
Cơ chế:
Trước hết con trỏ của tệp hiện thời đặt ở bản ghi đầu tiên, con trỏ của tệp
<bí danh> cũng được đặt ở bản ghi đầu tiên và lệnh xét <btL> nếu thỏa mãn thì một bản ghi sẽ được kết nối và ghi vào <tệp KQ>, ngược lại thì bỏ qua và con trỏ trên tệp <bí danh> di chuyển đến bản ghi kế tiếp và lại xét <btL> quá trình tiếp tục cho đến khi con trỏ bản ghi của tệp <bí danh> đặt ở cuối tệp thì
con trỏ của tệp hiện thời được di chuyển đến bản ghi kế tiếp và con trỏ bản ghi
của tệp <bí danh> lại trở về bản ghi đầu tiên Quá trình xét bản ghi này của tệp
hiện thời với các bản ghi của tệp bí danh lại diễn ra như trên Đến khi con trỏ của tệp hiện thời đặt ở cuối tệp thì lệnh kết thúc
Chương 9 Thao tác với nhiều tệp CSDL
Trang 143 Kết nối hai tệp CSDL
Ví dụ 1:
CLOS ALL
SELE 2
SELE 1
MSHH, DM.DGIA, SL, TIEN
BROW
Chương 9 Thao tác với nhiều tệp CSDL
Trang 153 Kết nối hai tệp CSDL
Ví dụ 2:
CLOSE ALL SELE 3
USE DIEMTHI ALIA DT
SELE 2
USE FACHBTALIA FA
SELE 1
JOIN WITH FATO TGIAN FOR SBD=FA.SBD
USE TGIAN
USE KQTHI
BROW
Chương 9 Thao tác với nhiều tệp CSDL
Trang 164 Thiết lập mối liên kết giữa nhiều tệp CSDL
Lệnh JOIN có một số nhược điểm sau:
Phải tạo ra tệp CSDL để chứa kết quả (tốn không gian nhớ)
Việc kết nối chỉ thể hiện một lúc hai tệp
Kết quả bị cứng hoá nên sau khi kết nối nếu có sự thay đổi trên các tệp nguồn thì tệp kết quả cũng không thể hiện được
Để khắc phục chúng ta sẽ tiến hành liên kết bằng lệnh:
SET RELATION TO <khóa> INTO <bí danh> [ADDITIVE]
Điều kiện:
Trong các tệp tham gia liên kết ta phải chọn một tệp có khả năng liên kết với các tệp khác để mở ở vùng hiện thời và gọi nó là tệp chủ
Các tệp còn lại gọi là tệp kết được mở trên các vùng làm việc khác với bí danh và được chỉ số theo trường khóa liên kết
Chương 9 Thao tác với nhiều tệp CSDL
Trang 174 Thiết lập mối liên kết giữa nhiều tệp CSDL
Giải thích: Lệnh thiết lập mối liên kết giữa tệp chủ và tệp <bí danh> theo
phép so sánh bằng giữa trường <khóa> của tệp chủ và trường lập chỉ số của tệp <bí danh> Nếu có tuỳ chọn ADDITIVE thì liên kết này sẽ bổ sung vào các liên kết đã có trước đó của tệp chủ Nếu không đây là liên kết đầu tiên của tệp chủ
Cơ chế: Với các tệp kết đang thiết lập liên kết với tệp chủ, khi con trỏ của
tệp chủ đứng ở một bản ghi nào đó thì con trỏ của các tệp kết sẽ tự động dịch chuyển đến các bản ghi tương ứng
Ví dụ: Trong 2 tệp HOADON.DBF và DMHANG.DBF thì HOADON.DBF
là tệp chủ
Trong 3 tệp HOSO.DBF, FACHBT.DBF và DIEMTHI.DBF thì FACHBT.DBF là tệp chủ
Chương 9 Thao tác với nhiều tệp CSDL
Trang 184 Thiết lập mối liên kết giữa nhiều tệp CSDL
Ví dụ 1:
CLOS ALL SELE 2
SELE 1
BROW FIEL SHHD, MSHH, SL, DM.DGIA, TIEN
Chương 9 Thao tác với nhiều tệp CSDL
Trang 194 Thiết lập mối liên kết giữa nhiều tệp CSDL
Ví dụ 2:
CLOSE ALL SELE 3
USE DIEMTHI ALIA DT
INDE ON FACH TO T1
SELE 2
USE HOSO ALIA HS
INDE ON SBD TO T2
SELE 1
USE FACHBT
SET RELA TO SBD INTO HS
SET RELA TO FACH INTO DT ADDITIVE BROW FIEL SBD, HS.HVT, DT.DIEM
Chương 9 Thao tác với nhiều tệp CSDL
Trang 205 Đóng các tệp CSDL đang mở
CLOSE DATABASE: Đóng tất cả các tệp CSDL và các tệp chỉ số
CLOSE ALL: Đóng tất cả các loại tệp
QUIT: Đóng tất cả các loại tệp và thoát khỏi Foxpro
Chương 9 Thao tác với nhiều tệp CSDL