Giáo trình Visual FoxPro 6.0
Giáo trình được tổ chức theo 11 ch ương:
Chương 1: Làm quen v ới môi trường VF
Chương 2: Các lo ại dữ liệu trong VF
Chương 3: DataBa se và Table
Chương 4: Truy v ấn và hiển thị thông tin
Chương 5: Form Report
Chương 6: Lập trình trong VF
Chương 7: Thi ết kế giao diện
Chương 8: Bẫy trong ch ương trình
Chương 9: Mảng và chuyển giao dữ liệu
Chương 10: Một số lệnh hiệu chỉnh dữ liệu
Chương 11:Chương trình con
Chương 12: Ghép d ữ liệu
a=150 b=100 ?' a b ' ?a, b Return c. Hiển thị biến nhớ Để hiển thị nội dung biến nhớ (tên biến, toàn cuc hay cục bộ, kiểu và độ lớn) hãy dùng lệnh sau: DISPLAY MEMORY [LIKE ] [TO PRINTER | TO FILE ] d. Giải phóng các biến nhớ Để giải phóng các biến nhớ khỏi bộ nhớ h ãy thực hiện lệnh sau: RELEASE Ví dụ a=1 b='Tin hoc' TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 140 c=.T. Release b,c Display memo Khi chạy chương trình chỉ có biến a được hiển thị. Lệnh giải phóng biến nhớ còn có cách viết khác: RELEASE ALL [ LIKE | EXCEPT ] Ví dụ: D1=12 D2=11 C=4 RELEASE ALL Like D* Hoặc có thể viết: D1=12 D2=11 C=4 RELEASE ALL EXCEPT C* Chú ý: Chỉ có lệnh RELEASE mới xoá đ ược biến toàn cục. Ví dụ: PUBLIC a1, a2,a3, b Store 10 to a1, a2, a3 Store 2 To b Release all like a* Display Memory Sau khi chạy chương trình ta thấy biến a1,a2, a3 không bị xo á TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 141 Chương 12. Lệnh ghép ngang (JOIN) và lệnh cập nhật (UPDATE) 12.1 Lệnh Join Tạo một tệp CSDL mới từ tệp CSDL hiện h ành và một tệp CSDL thứ hai mở trong vùng làm việc khác. Mỗi bản ghi của tệp CSDL mới đ ược tạo bởi các trường trong hai bản ghi tương ứng. Sau đây là cú pháp lệnh: JOIN WITH | WITH TO FOR [FIELDS | FIELDS LIKE | FIELDS EXCEPT ] Các mệnh đề trên có ý nghĩa như sau: | Xác định vùng làm việc của tệp CSDL thứ hai. Vùng làm việc có thể được xác định qua biểu thức số hoặc qua biểu thức ký tự . TO là tên của tệp CSDL mới được tạo thành từ lệnh trên. FOR Khi thực hiện lệnh JOIN mỗi bản ghi trong tệp CSDL hiện h ành sẽ được kết hợp lần lượt với từng bản ghi trong tệp CSDL thứ hai, nh ưng chỉ những bản ghi thoả mãn điều kiện . [FIELDS | FIELDS LIKE | F IELDS EXCEPT ] Chỉ những trường trong hoặc trong LIKE hoặc không phải trong EXCEPT mới được kết nối, ví dụ: FIELDS LIKE A*,P* FIELDS LIKE A*,P* EXCEPT PARTNO* Ví dụ ta có hai tệp CSDL. Tệp thứ nhất có t ên HOSO.DBF với nội dung sau: Record# HOTEN NGAYSINH SBDC KHUVUC DOITUONG 1 Hoàng Thanh Hà 191180 99A311 3 11 2 Hoàng Trung Thành 231181 99A669 1 08 3 Nguyễn Anh Tuấn 250880 99A784 2 10 4 Vương Văn Hiệp 250778 99A971 2 09 5 Hoàng Văn Mạnh 300680 99A483 2 09 6 Hoàng Thọ Diện 281177 99A116 2 09 7 Vũ Thị Na 100479 99A492 1 08 8 Hoàng Văn Tường 260179 99A806 2 09 9 Nguyễn Văn Thuyết 210680 99A627 2 11 10 Bùi Thế Thuật 180281 99A633 2 10 11 Nguyễn Văn Đại 020879 99A171 2 09 12 Lê Thanh Nam 170880 99A504 2 09 13 Nguyễn Xuân Đô 041080 99A953 1 08 TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 142 14 Đỗ Trí Duy 100481 99A123 2 09 15 Đinh Quang Hải 280479 99A328 2 10 16 Dương Thị Lan 230481 99A411 3 10 17 Nguyễn Quang Phú 240480 99A565 3 10 18 Hà Tất Thắng 151181 99A689 2 10 19 Bùi Duy Thức 100981 99A700 3 10 20 Lâm Hồng Hiệp 080180 99A223 3 11 Tệp thứ hai có tên DIEMTHI.DBF có nội dung như sau: Record# SBDC TOAN10 LY10 HOA10 TONGDIEM30 1 99A311 5.5 4.5 6.8 16.8 2 99A669 6.5 4.3 6.4 17.2 3 99A784 7.5 5.9 7.5 20.9 4 99A971 6.5 6.0 7.0 19.5 5 99A483 5.6 7.4 4.6 17.6 6 99A116 4.8 6.2 5.0 16.0 7 99A492 5.8 6.6 5.1 17.5 8 99A806 6.8 6.9 3.7 17.4 9 99A627 6.9 6.1 4.9 17.9 10 99A633 6.9 5.4 5.6 17.9 11 99A171 7.0 5.7 6.6 19.3 12 99A504 7.0 5.4 6.8 19.2 13 99A953 3.0 4.2 5.7 12.9 14 99A123 4.1 4.4 5.3 13.8 15 99A328 4.1 8.7 5.4 18.2 16 99A411 4.1 7.6 4.3 16.0 17 99A565 4.1 6.8 7.3 18.2 18 99A689 5.1 6.2 8.6 19.9 19 99A700 5.1 6.6 3.1 14.8 20 99A223 6.3 6.1 8.8 21.2 Ví dụ 1: Set talk off Select 1 Use HoSo Select 2 Use DiemThi Join With HoSo To TepMoi For sbdc=HoSo.Sbdc Use TepMoi Browse Khi chương trình chạy ta được TepMoi như sau: TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 143 Record# SBDC TOAN10 LY10 HOA10 TONGDIEM30 HOTEN NGAYSINH KHUVUC DOITU ONG 1 99A311 5.5 4.5 6.8 16.8 Hoàng Thanh Hà 191180 3 11 2 99A669 6.5 4.3 6.4 17.2 Hoàng Trung Thành 231181 1 08 3 99A784 7.5 5.9 7.5 20.9 Nguyễn Anh Tuấn 250880 2 10 4 99A971 6.5 6.0 7.0 19.5 Vương Văn Hiệp 250778 2 09 5 99A483 5.6 7.4 4.6 17.6 Hoàng Văn M ạnh 300680 2 09 6 99A116 4.8 6.2 5.0 16.0 Hoàng Th ọ Diện 281177 2 09 7 99A492 5.8 6.6 5.1 17.5 Vũ Thị Na 100479 1 08 8 99A806 6.8 6.9 3.7 17.4 Hoàng Văn Tư ờng 260179 2 09 9 99A627 6.9 6.1 4.9 17.9 Nguyễn Văn Thuyết 210680 2 11 10 99A633 6.9 5.4 5.6 17.9 Bùi Thế Thuật 180281 2 10 11 99A171 7.0 5.7 6.6 19.3 Nguyễn Văn Đại 020879 2 09 12 99A504 7.0 5.4 6.8 19.2 Lê Thanh Nam 170880 2 09 13 99A953 3.0 4.2 5.7 12.9 Nguyễn Xuân Đô 041080 1 08 14 99A123 4.1 4.4 5.3 13.8 Đỗ Trí Duy 100481 2 09 15 99A328 4.1 8.7 5.4 18.2 Đinh Quang H ải 280479 2 10 16 99A411 4.1 7.6 4.3 16.0 Dương Th ị Lan 230481 3 10 17 99A565 4.1 6.8 7.3 18.2 Nguyễn Quang Phú 240480 3 10 18 99A689 5.1 6.2 8.6 19.9 Hà Tất Thắng 151181 2 10 19 99A700 5.1 6.6 3.1 14.8 Bùi Duy Th ức 100981 3 10 20 99A223 6.3 6.1 8.8 21.2 Lâm Hồng Hiệp 080180 3 11 Ví dụ 2: Set talk off Select 1 Use HoSo Select 2 Use DiemThi Join With HoSo To TepMoi For sbdc=HoSo.Sbdc Fields Hoso.Hoten, SBDC, TongDiem30 Use TepMoi Browse Khi chương trình chạy ta được TepMoi như sau: Record# HOTEN SBDC TONGDIEM30 1 Hoàng Thanh Hà 99A311 16.8 2 Hoàng Trung Thành 99A669 17.2 3 Nguyễn Anh Tuấn 99A784 20.9 4 Vương Văn Hiệp 99A971 19.5 5 Hoàng Văn Mạnh 99A483 17.6 6 Hoàng Thọ Diện 99A116 16.0 7 Vũ Thị Na 99A492 17.5 8 Hoàng Văn Tường 99A806 17.4 TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 144 9 Nguyễn Văn Thuyết 99A627 17.9 10 Bùi Thế Thuật 99A633 17.9 11 Nguyễn Văn Đại 99A171 19.3 12 Lê Thanh Nam 99A504 19.2 13 Nguyễn Xuân Đô 99A953 12.9 14 Đỗ Trí Duy 99A123 13.8 15 Đinh Quang Hải 99A328 18.2 16 Dương Thị Lan 99A411 16.0 17 Nguyễn Quang Phú 99A565 18.2 18 Hà Tất Thắng 99A689 19.9 19 Bùi Duy Thức 99A700 14.8 20 Lâm Hồng Hiệp 99A223 21.2 12.2 Lệnh UPDATE Lệnh này dùng để cập nhật dữ liệu vào tệp CSDL hiện hành từ một tệp CSDL thứ hai đang mở trong một vùng làm việc khác. Cú pháp lệnh như sau: UPDATE ON FROM | REPLACE WITH [, WITH ...] [RANDOM] Các mệnh đề trên có ý nghĩa như sau: ON Field là trường khoá, tệp CSDL hiện thời phải đ ược sắp xếp theo lệnh SORT hoặc lệnh INDEX trên trường này theo thứ thự tăng dần. FROM | Xác định vùng làm việc của tệp CSDL thứ hai, nơi để lấy dữ liệu chuyển cho tệp hiện thời. Vùng làm việc có thể được xác định qua biểu thức số hoặc qua biểu thức ký tự . REPLACE WITH [, WITH ...] Trường trong tệp CSDL hiện thời sẽ đ ược nhận giá trị v.v.. RANDOM Sẽ được dùng nếu tệp CSDL thứ hai không được sắp xếp theo trường khoá tăng dần. Nếu tệp CSDL thứ hai được sắp xếp tăng dần theo trường khoá thì mệnh đề này không cần thiết và qúa trình cập nhật được tiến hành nhanh hơn. Giả sử ta có tệp Hoso.dbf có các trường sau: Record# HOTEN NGAYSINH SBDC TONG 1 Hoàng Thọ Diện 281177 99A116 0.00 2 Đỗ Trí Duy 100481 99A123 0.00 3 Nguyễn Văn Đại 020879 99A171 0.00 4 Lâm Hồng Hiệp 080180 99A223 0.00 TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 145 5 Hoàng Thanh Hà 191180 99A311 0.00 6 Đinh Quang Hải 280479 99A328 0.00 7 Dương Thị Lan 230481 99A411 0.00 8 Hoàng Văn Mạnh 300680 99A483 0.00 9 Vũ Thị Na 100479 99A492 0.00 10 Lê Thanh Nam 170880 99A504 0.00 11 Nguyễn Quang Phú 240480 99A565 0.00 12 Nguyễn Văn Thuyết 210680 99A627 0.00 13 Bùi Thế Thuật 180281 99A633 0.00 14 Hoàng Trung Thành 231181 99A669 0.00 15 Hà Tất Thắng 151181 99A689 0.00 16 Bùi Duy Thức 100981 99A700 0.00 17 Nguyễn Anh Tuấn 250880 99A784 0.00 18 Hoàng Văn Tường 260179 99A806 0.00 19 Nguyễn Xuân Đô 041080 99A953 0.00 20 Vương Văn Hiệp 250778 99A971 0.00 Và tệp Diem.dbf có các trường sau: Record# SBDC TOAN10 LY10 HOA10 TONGDIEM30 1 99A223 6.3 6.1 8.8 21.2 2 99A784 7.5 5.9 7.5 20.9 3 99A689 5.1 6.2 8.6 19.9 4 99A971 6.5 6.0 7.0 19.5 5 99A171 7.0 5.7 6.6 19.3 6 99A504 7.0 5.4 6.8 1 9.2 7 99A328 4.1 8.7 5.4 18.2 8 99A565 4.1 6.8 7.3 18.2 9 99A627 6.9 6.1 4.9 17.9 10 99A633 6.9 5.4 5.6 17.9 11 99A483 5.6 7.4 4.6 17.6 12 99A492 5.8 6.6 5.1 17.5 13 99A806 6.8 6.9 3.7 17.4 14 99A669 6.5 4.3 6.4 17.2 15 99A311 5.5 4.5 6.8 16.8 16 99A116 4.8 6.2 5.0 16.0 17 99A411 4.1 7.6 4.3 16.0 18 99A700 5.1 6.6 3.1 14.8 19 99A123 4.1 4.4 5.3 13.8 20 99A953 3.0 4.2 5.7 12.9 Ta muốn đưa cột TongDiem30 của tệp CSDL Diem.dbf sâng cột Tong của tệp Hoso.dbf theo trường khoá là SBDC, ta lập trình như sau: Set talk off Clear TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ELEC Trang 146 Select 1 Use Diem Select 2 Use Hoso Index on sbdc to sbdc1 Update On Sbdc From Diem Replace Tong With Diem.To ngDiem30 Random Select 2 Browse Sau khi chạy chương trình ta có kết quả: Record# HOTEN NGAYSINH SBDC TONG 1 Hoàng Thọ Diện 281177 99A116 16.00 2 Đỗ Trí Duy 100481 99A123 13.80 3 Nguyễn Văn Đại 020879 99A171 19.30 4 Lâm Hồng Hiệp 080180 99A223 21.20 5 Hoàng Thanh Hà 191180 99A311 16.80 6 Đinh Quang Hải 280479 99A328 18.20 7 Dương Thị Lan 230481 99A411 16.00 8 Hoàng Văn Mạnh 300680 99A483 17.60 9 Vũ Thị Na 100479 99A492 17.50 10 Lê Thanh Nam 170880 99A504 19.20 11 Nguyễn Quang Phú 240480 99A565 18.20 12 Nguyễn Văn Thuyết 210680 99A627 17.90 13 Bùi Thế Thuật 180281 99A633 17.90 14 Hoàng Trung Thành 231181 99A669 17.20 15 Hà Tất Thắng 151181 99A689 19.90 16 Bùi Duy Thức 100981 99A700 14.80 17 Nguyễn Anh Tuấn 250880 99A784 20.90 18 Hoàng Văn Tường 260179 99A806 17.40 19 Nguyễn Xuân Đô 041080 99A953 12.90 20 Vương Văn Hiệp 250778 99A971 19.50 Hoặc ta có thể viết lại chương trình để chạy nhanh hơn như sau: Set talk off Clear Select 1 Use Diem Index on SBDC to SbdDiem Select 2 Use Hoso Index on sbdc to sbdc1 Update On Sbdc From Diem Replace Tong With Diem.TongDiem30 Select 2 Browse
File đính kèm:
- Giáo trình Visual FoxPro 6.0.pdf