1. Đị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ở
20 trang |
Chia sẻ: lylyngoc | Lượt xem: 1833 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Chương 9. Thao tác với nhiều tệp CSDL, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG CAO ĐẲNG SƯ PHẠM QUẢNG TRỊ
KHOA CÔNG NGHỆ THÔNG TIN
1. Đị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
1. Đị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
1. Đị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
Ví dụ: SELE C
hoặc
SELE 15
Chương 9. Thao tác với nhiều tệp CSDL
1. Đị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
USE
b. Gán bí danh
SELECT
USE ALIAS
: 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.
Ví dụ: SELE 5
USE HSCB
Ví dụ: SELE 16
USE BLUONG ALIAS BL
Chương 9. Thao tác với nhiều tệp CSDL
1. Đị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: như đã dùng từ trước đến nay
* Tệp ở vùng làm việc khác
.
.
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
Ví dụ: SELE 3
USE HSCB ALIAS HS
SELE 1
USE BLUONG
? HSL
? HS.HSL (hoặc C.HSL)
Chương 9. Thao tác với nhiều tệp CSDL
2. 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
2. 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 [FOR ][FIELDS ]
Chương 9. Thao tác với nhiều tệp CSDL
2. 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 thì chỉ những bản ghi thỏa mãn mới
được bổ sung.
Nếu có tuỳ chọn FIELDS 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
COPY TO HS1
APPEND FROM HS1 FOR HSL>3
APPEND FROM HS1 FIELD MSCB, HD, TEN,HSL
APPEND FROM BLUONG
Chương 9. Thao tác với nhiều tệp CSDL
2. 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 FROM REPLACE WITH
[, WITH ... ] [ FOR ]
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 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 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 thì chỉ những bản ghi thoả mãn mới được cập nhật.
Chú ý: Trường 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
2. 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
USE HSCB
INDE ON MSCB TO T2
UPDATE ON MSCB FROM LM REPL HSL WITH LM.HSL
Chương 9. Thao tác với nhiều tệp CSDL
3. 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 TO FOR [FIELDS ]
Điều kiện: Một tệp được mở trên vùng làm việc khác với , 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 thỏa mãn và ghi vào . Nếu
có tùy chọn FIELDS thì 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
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
3. 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
cũng được đặt ở bản ghi đầu tiên và lệnh xét nếu thỏa mãn
thì một bản ghi sẽ được kết nối và ghi vào , ngược lại thì bỏ qua và
con trỏ trên tệp di chuyển đến bản ghi kế tiếp và lại xét quá
trình tiếp tục cho đến khi con trỏ bản ghi của tệp đặ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 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
3. Kết nối hai tệp CSDL
Ví dụ 1:
CLOS ALL
SELE 2
USE DMHANG ALIAS DM
SELE 1
USE HOADON
JOIN WITH DM TO KQUA FOR MSHH=DM.MSHH FIEL SHHD,
MSHH, DM.DGIA, SL, TIEN
USE KQUA
BROW
Chương 9. Thao tác với nhiều tệp CSDL
3. Kết nối hai tệp CSDL
Ví dụ 2:
CLOSE ALL
SELE 3
USE DIEMTHI ALIA DT
SELE 2
USE FACHBT ALIA FA
SELE 1
USE HOSO
JOIN WITH FA TO TGIAN FOR SBD=FA.SBD
USE TGIAN
JOIN WITH DT TO KQTHI FOR FACH=DT.FACH
USE KQTHI
BROW
Chương 9. Thao tác với nhiều tệp CSDL
4. 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 INTO [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
4. 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 theo
phép so sánh bằng giữa trường của tệp chủ và trường lập chỉ số của
tệp . 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
4. Thiết lập mối liên kết giữa nhiều tệp CSDL
Ví dụ 1:
CLOS ALL
SELE 2
USE DMHANG ALIAS DM
INDE ON MSHH TO T1
SELE 1
USE HOADON
SET RELATION TO MSHH INTO DM
BROW FIEL SHHD, MSHH, SL, DM.DGIA, TIEN
Chương 9. Thao tác với nhiều tệp CSDL
4. 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
5. Đó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