Giáo trình Hệ quản trị cơ sở dữ liệu Visual Foxpro

pdf 120 trang hapham 3420
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ quản trị cơ sở dữ liệu Visual Foxpro", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_he_quan_tri_co_so_du_lieu_visual_foxpro.pdf

Nội dung text: Giáo trình Hệ quản trị cơ sở dữ liệu Visual Foxpro

  1. Giáo trình Hệ quản trị cơ sở dữ liệu Visual Foxpro
  2. Simpo PDF Merge and Split UnregisteredBài Version 1 - M -ở đầu I. Giới thiệu Nội dung môn học Khai thác hệ quản trị cơ sở dữ liệu Visual Foxpro Tiếp cận với công việc xây dựng một hệ thống quản lý Tài liệu tham khảo [1] - Sử dụng và khai thác Microsoft Visual Foxpro 6.0 - Nguyễn Ngọc Minh, Nguyễn Đình Đề - NXB Lao động 2003 [2] - Bộ Help MSDN của Microsoft (tiếng anh) [3] - Phân tích và thiết kế hệ thống thông tin - Đào Thanh Tĩnh - NXB Quân đội 2004 [4] - Help của Visual Foxpro II. Hệ quản trị csdl Hệ quản trị cơ sở dữ liệu (Database Management System) là một hệ thống phần mềm máy tính được thiết kế chuyên biệt cho bài toán quản lý. Mô hình dữ liệu của các hệ quản trị csdl là mô hình quan hệ. Hệ quản trị csdl cung cấp 2 tính năng chính sau: 1- Lưu trữ, quản lý dữ liệu 2- Công cụ truy cập, khai thác dữ liệu Các Hệ quản trị csdl thường dùng hiện nay: 1- SQL Server: Phát triển bởi Microsoft; là hệ CSDL dùng cho các tổ chức, doanh nghiệp lớn; Khả năng đáp ứng trên mạng cao; Đảm bảo tính an toàn, bảo mật. 2- Oracle: Phát triển bởi Oracle; là hệ CSDL dùng cho các tổ chức, doanh nghiệp lớn; Khả năng đáp ứng trên mạng cao; Đảm bảo tính an toàn, bảo mật. (Được đánh giá là mạnh hơn SQL verver và thực tế giá phần mền này cũng đắt hơn SQL Server) 3- Foxpro, Access: Phát triển bởi Microsoft; là hệ CSDL dùng cho các tổ chức, doanh nghiệp vừa và nhỏ; có khả năng triển khai trên mạng; tính bảo mật, an toàn là không cao. 4- MySQL: Hệ CSDL mã nguồn mở, được sử dụng chủ yếu cho các ứng dụng Web. III. Mô hình dữ liệu quan hệ Trong mô hình này người ta mô tả các [đối tượng] (như con người, hàng hóa, môn học ) thông qua các bảng (Table), mỗi bảng lại được mô tả qua các trường dữ liệu.
  3. Simpo PDF B ảngMerge (Table): and Mô Split tả quaUnregistered các cột - trư Versionờng (Field) - và các dòng - Bản ghi (Record) (ví dụ) (Mỗi bảng có thể hiểu như một [quan hệ]) Trường (Field): Mô tả 1 thuộc tính nào đó của đối tượng thông qua tên trường (Field name), kiểu (Type) và động rộng (Width) (ví dụ). Bản ghi (Record): Tập các giá trị cụ thể của các trường của cùng 1 đối tượng (ví dụ). Quan hệ giữa các bảng (Relationship): Là cách thức mô tả một đối tượng lớn hơn từ những đối tượng nhỏ (ví dụ). IV. bài toán quản lý Bài toán quản lý có ở hầu hết mọi đơn vị, tổ chức, thậm chí với cả một số cá nhân. Những bài toán quản lý có thể kể đến như: o Quản lý nhân sự o Quản lý hàng hóa o Quản lý kế toán o Quản lý lương o Quản lý sinh viên, điểm o Quản lý sách o Đặc điểm chung của những bài toán này: o Không cần sử dụng những thuật toán phức tạp mà yêu cầu chủ yếu là: Thống kê, tìm kiếm, lọc thông tin. o Khối lượng dữ liệu thường là rất lớn. Đặc điểm này thực sự là một thách thức lơn nếu chúng ta phải quản lý thủ công (việc tìm kiếm, thống kê, lọc -> mất rất nhiều thời gian và không chính xác) Bài tập môn học - Xây dựng hệ quản lý điểm A. Mô tả bài toán Bài toán Quản lý điểm (đối với các trường Đại học, Cao đẳng): Công tác quản lý điểm (hay kết quả học tập) của sinh viên đóng vai trò hết sức quan trọng đối với hoạt động của các trường ĐH và CĐ. Trong khoảng 10 năm trở lại đây công tác quản lý điểm (ở một số trường trong đó có HVKTQS) đã dần được tin học hóa nhằm đem lại hiệu quả cao hơn, tin cậy hơn.
  4. Simpo PDF Bài Merge toán Qu andản Splitlý điểm Unregistered đặt ra các vấn Version đề cơ bản - sau: Thể hiện được mô hình tổ chức quản lý sinh viên theo khóa, theo lớp, các loại hình đào tạo; Quản lý các môn học của các lớp theo học kỳ và kết quả học tập của sinh viên đối với các môn học đó. Hệ thống còn phải cho phép tạo ra các báo cáo từ kết quả học tập của sinh viên nhằm phục vụ công tác điều hành huấn luyện như: Tổng kết kết quả học tập theo kỳ, theo năm, theo khóa; In Danh sách thi lại; In Bảng điểm học kỳ; In Bảng điểm các nhân Ngoài các chức năng chính như trên, hệ thống này còn cần thêm một số chức năng khác như: cập nhật các loại danh mục dữ liệu (danh mục lớp, danh mục loại hình đào tạo, danh mục ngành học ); các chức năng sao chép/copy dữ liệu; chuyển đổi – tách lớp; các chức năng trợ giúp Có thể mô tả sơ lược các công việc chính (đối với 1 khóa học) trong hệ thống quản lý điểm như sau: 1. Với mỗi khóa học mới -> cần phải có mô tả cho khóa mới này. 2. Mô tả danh mục các lớp cho khóa mới. 3. Với mỗi lớp đã có cập nhật danh sách sinh viên của lớp 4. Với mỗi học kỳ cần cập nhật danh sách môn học/lớp 5. Khi có kết quả các môn học -> Cập nhật điểm môn học/lớp 6. Tổng kết kết quả học tập học kỳ, năm học, khóa học 7. In Danh sách thi lại 8. In Bảng điểm học kỳ 9. In Bảng điểm các nhân. B. Yêu cầu Xây dựng hệ thống Quản lý điểm phục vụ công tác quản lý điểm của các trường ĐH và CĐ với các yêu cầu sau: 1. Cập nhật từ điển Cập nhật danh mục khoá Cập nhật danh mục lớp Cập nhật danh mục ngành học Cập nhật danh mục loại hình đào tạo Cập nhật danh mục giáo viên 2. Cập nhật dữ liệu Cập nhật hồ sơ sinh viên
  5. Simpo PDF Merge andCập Splitnhật môn Unregistered học/lớp/học Version kỳ - Cập nhật điểm thi kết thúc môn 3. Báo cáo/ thống kê In danh sách lớp In Danh sách thi In phiếu điểm In tổng kết kết quả học kỳ In tổng kết kết quả năm học In tổng kết kết quả toàn khóa học In bảng điểm học kỳ In bảng điểm cá nhân C. Một số gọi ý Các bảng dữ liệu trong hệ thống quản lý điểm có thể bao gồm các bảng sau: 1. Danh mục khoá DMKHOA.DBF Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã khoá (Khoá chính) Ten C 30 Tên khoá Nienkhoa C 11 Niên khoá (Ghi 2004 – 2005, hoặc 2005 – 2006 ) Ghichu C 200 Ghi chú 2. Danh mục lớp DMLOP.DBF Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã lớp (khoá chính) Ten C 30 Tên lớp NgayKG D 8 Ngày khai giảng NgayBG D 8 Ngày bế giảng Manganh C 10 Mã ngành (khoá ngoài – dùng để đặt liên kết đến bảng DMNGANH) MaLHDT C 10 Mã loại hình đào tạo (khoá ngoài – dùng để đặt liên kết đến bảng DMLHDT) Makhoa C 10 Ma khoá (khoá ngoài – dùng để đặt quan hệ đến bảng DMKHOA) Ghichu C 200 Ghi chú 3. Danh mục ngành học DMNGANH.DBF Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã ngành (khoá chính)
  6. Simpo PDFTen Merge andC Split Unregistered30 Tên Version ngành - Ghichu C 200 Ghi chú 4. Danh mục loại hình đào tạo DMLHDT.DBF Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã loại hình đào tạo (khoá chính) Ten C 30 Tên loại hình Ghichu C 200 Ghi chú 5. Hồ sơ sinh viên HOSOSV.DBF Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã sinh viên (Khoá chính) Mã sinh viên có dạng XXXXYYYYYY, trong đó XXXX có dạng là năm sinh viên đó trúng tuyển vào trường, YYYYYY là số thứ tự của sinh viên nhập học năm XXXX (Ví dụ: mã 2004000012 là mã của sinh viên thứ 12 trúng tuyển năm 2004 .) HoTen C 30 Họ tên sinh viên Ngaysinh D 8 Ngày sinh Gioi L 1 Logic, .T. – Nam, .F. – Nữ Hokhau C 200 Hộ khẩu trường trú Diachi C 200 Địa chỉ Malop C 10 Mã lớp (khoá ngoài – dùng để liên kết đến bảng DMLOP) Ghichu C 200 Ghi chú 6. Môn học MONHOC.DBF Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã môn (Khoá chính) Tenmon C 50 Tên môn Sotiet N 3 Số tiết SoDVHT N 3,1 Số đơn vị học trình Hocky N 1 Học kỳ (ghi 1 – Học kỳ 1, ghi 2 – Học kỳ 2) Namhoc N 4 Năm học (Ghi năm học đầu trong ) NgayThi D 8 Ngày thi Malop C 10 Mã lớp (khoá ngoài – dùng để liên kết đến bảng DMLOP) MaGV C 10 Mã giáo viên (Khoá ngoài – dùng để liên kết đến bảng GIAOVIEN) Ghichu C 200 Ghi chú
  7. Simpo PDF7. MergeBảng GIAOVIEN.DBF and Split Unregistered Version - Tên trường Kiểu Độ rộng Ghi chú Ma C 10 Mã giáo viên Hoten C 30 Họ tên giáo viên Hocham C 10 Học hàm (GV, GVC, GS, PGS) Hocvi C 10 Học vị (CN, KS, ThS, TS, TSHK) Ghichu C 200 Ghi chú 8. Bảng điểm DIEM.DBF Tên trường Kiểu Độ rộng Ghi chú Mamon C 10 Mã môn MaSV C 10 Mã sinh viên Diem1 N 5,2 Điểm thi lần 1 Diem2 N 5,2 Điểm thi lần 2 Diem3 N 5,2 Điểm thi lần 3 Ghichu C 200 Ghi chú Các chức năng của chương trình có thể thiết kế như sau: o Cập nhật danh mục khoá Giao diện này có dạng như sau: A1 – Danh sách khoá (Sử dụng GRID) Khi chọn 1 dòng (1 khoá) thông tin về khoá được chọn sẽ hiển thị trong ô A2 A2 – Chi tiết khoá được chọn A3 Các chức năng : Thêm, sửa, xoá (1 khoá) o Cập nhật danh mục lớp A1 A3 – Chi tiết về lớp được chọn Chọn khoá : (sử dụng ô combox) Chức năng [OK] Khi chọn OK, danh sách các lớp của khoá được chọn sẽ hiển thị trong ô A2 A2 – Danh sách lớp của khoá được chọn (Sử Các chức năng: Thêm, sửa, Xoá (1 lớp) dụng GRID) Khi chọn 1 dòng (1 lớp) thông tin chi tiết về lớp này sẽ hiển thị trong ô A3 o Cập nhật danh mục ngành Tương tự cập nhật danh mục khoá
  8. Simpo PDF Mergeo Cập and nhật Split danh Unregistered mục loại hình đàoVersion tạo - Tương tự cập nhật danh mục khoá o Cập nhật danh mục giáo viên Tương tự cập nhật danh mục khoá o Cập nhật hồ sơ sinh viên Giao diện này có dạng như sau: A1 A3 - Chi tiết về sinh viên được chọn Chọn khoá: (Sử dụng ô Combox) Chọn lớp: (Sử dụng ô Combox) Chức năng [OK] Khi chọn [OK] danh sách sinh viên của lớp/khoá đã chọn sẽ hiển thị trong ô A2 A2 – Danh sách sinh viên của lớp/khoá đã Các chức năng: Thêm, Sửa, Xoá (1 sinh chọn (sử dụng GRID) viên) Khi chọn 1 dòng (1 sinh viên) thì thông tin chi tiết về sinh viên này sẽ hiển thị trong ô A3 o Cập nhật môn học/lớp/học kỳ Giao diện này có dạng như sau: A1 A3 – Chi tiết về môn học được chọn Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chọn học kỳ: . Năm học: Chức năng [OK] Khi chọn [OK] danh sách môn học của lớp/khoá/học kỳ-năm học đã chọn sẽ hiển thị trong ô A2 A2 – Danh sách môn học của lớp/khoá/học kỳ- Các chức năng: Thêm, Sửa, Xoá (1 môn năm học đã chọn (sử dụng GRID) học) Khi chọn 1 dòng (1 môn học) thì thông tin chi tiết về môn học này sẽ hiển thị trong ô A3 o Cập nhật điểm thi kết thúc môn Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox)
  9. Simpo PDFChọn Merge học kỳ: and . NămSplit học: Unregistered Version - Chọn môn học: .(sử dụng ô Combox) Thi lần: (1 – thi lần đầu, 2 thi lại lần 1, 3 – thi lại lần 2) Chức năng [OK] Khi chọn [OK] danh sách “lớp-môn học” đã chọn sẽ hiển thị trong ô A2 A2 – Danh sách “lớp-môn học” đã chọn (Sử dụng GRID) (nếu là thi lần 1 – cho phép nhập vào cột điểm 1, lần 2 cho phép nhập vào cột điểm 2, lần 3 cho phép nhập vào cột điểm 3) Lưu ý: Danh sách “lớp-môn học” do chương trình tự động sinh ra, cần lưu ý khi thiết kế để tránh sinh ra nhiều lần. o In danh sách lớp Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “danh sách lớp” trên màn hình chức năng In cho phép đưa report “danh sách lớp” ra máy in) Report “danh sách lớp” có dạng như sau: Học viện KTQS Phòng Đào tạo Danh sách lớp Lớp: , Khoá: STT Mã SV Họ tên Ngày sinh Hộ khẩu Ghi chú o In danh sách thi Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox)
  10. Simpo PDFChọn Merge học kỳ: and . NămSplit học: Unregistered Version - Chọn môn học: .(sử dụng ô Combox) Thi lần: (1 – thi lần đầu, 2 thi lại lần 1, 3 – thi lại lần 2) Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “danh sách thi” trên màn hình chức năng In cho phép đưa report “danh sách thi” ra máy in) Report “Danh sách thi” có dạng như sau: Học viện KTQS Phòng Đào tạo Danh sách thi Lớp: , khoá: Môn học: .Học kỳ: năm học: Giáo viên: , ngày thi: STT Mã SV Họ tên Ngày sinh Đề số Kí nhận Ghi chú Giáo viên coi thi (Ký và ghi rõ họ tên) o In phiếu điểm Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chọn học kỳ: . Năm học: Chọn môn học: .(sử dụng ô Combox) Thi lần: (1 – thi lần đầu, 2 thi lại lần 1, 3 – thi lại lần 2) Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “phiếu điểm” trên màn hình chức năng In cho phép đưa report “phiếu điểm” ra máy in) Report “phiếu điểm” có dạng như sau: Học viện KTQS Phòng Đào tạo Phiếu điểm Lớp: , khoá:
  11. Simpo PDF Merge and SplitMôn Unregisteredhọc: .Học Version - kỳ: năm học: Giáo viên: , ngày thi: STT Mã SV Họ tên Ngày sinh Đề số Điểm Ghi chú Giáo viên chấm thi (Ký và ghi rõ họ tên) o In tổng kết kết quả học kỳ Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chọn học kỳ: . Năm học: Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “Tổng kết học kỳ” trên màn hình chức năng In cho phép đưa report “Tổng kết học kỳ” ra máy in) Report “Tổng kết học kỳ” có dạng như sau: Học viện KTQS Phòng Đào tạo Tổng kết kết quả học kỳ Học kỳ: năm học: Lớp: , khoá: STT Mã SV Họ tên Ngày sinh Điểm TBC Xếp loại Ghi chú Xếp loại theo điểm trung bình chung được tính như sau: Điểm TBC>=9 -> Xuất sắc; Điểm TBC>=8 -> Giỏi; Điểm TBC>=7 -> Khá; Điểm TBC>=6 -> Trung bình khá; Điểm TBC>=5 -> Trung bình; Điểm TBC Không đạt o In tổng kết kết quả năm học Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox)
  12. Simpo PDFChọn Merge Năm học: and Split Unregistered Version - Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “Tổng kết năm học” trên màn hình chức năng In cho phép đưa report “Tổng kết năm học” ra máy in) Report “Tổng kết năm học” có dạng như sau: Học viện KTQS Phòng Đào tạo Tổng kết kết quả năm học Năm học: Lớp: , khoá: STT Mã SV Họ tên Ngày sinh Điểm TBC Xếp loại Ghi chú Xếp loại theo điểm trung bình chung được tính như sau: Điểm TBC>=9 -> Xuất sắc; Điểm TBC>=8 -> Giỏi; Điểm TBC>=7 -> Khá; Điểm TBC>=6 -> Trung bình khá; Điểm TBC>=5 -> Trung bình; Điểm TBC Không đạt o In tổng kết kết quả toàn khoá Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “Tổng kết khoá học” trên màn hình chức năng In cho phép đưa report “Tổng kết khoá học” ra máy in) Report “Tổng kết năm học” có dạng như sau: Học viện KTQS Phòng Đào tạo Tổng kết kết quả khoá học Lớp: , khoá: STT Mã SV Họ tên Ngày sinh Điểm TBC Xếp loại Ghi chú Xếp loại theo điểm trung bình chung được tính như sau:
  13. Simpo PDFĐiểm MergeTBC>=9 and -> SplitXuất sắc;Unregistered Điểm TBC>=8 Version -> Gi -ỏi; Điểm TBC>=7 -> Khá; Điểm TBC>=6 -> Trung bình khá; Điểm TBC>=5 -> Trung bình; Điểm TBC Không đạt o In bảng điểm học kỳ Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chọn học kỳ: . Năm học: Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “Bảng điểm học kỳ” trên màn hình chức năng In cho phép đưa report “Bảng điểm học kỳ” ra máy in) Report “Bảng điểm học kỳ” có dạng như sau: Học viện KTQS Phòng Đào tạo Bảng điểm học kỳ Học kỳ: năm học: Lớp: , khoá: STT Mã SV Họ tên Môn 1 Môn 2 TBC o In bảng điểm cá nhân Giao diện này có dạng như sau: A1 Chọn khoá: . (sử dụng ô Combox) Chọn lớp: . (Sử dụng ô Combox) Chọn sinh viên: (sử dụng Combox) Chức năng: Xem, In, Thoát (chức năng Xem cho phép xem report “Bảng điểm cá nhân” trên màn hình chức năng In cho phép đưa report “Bảng điểm cá nhân” ra máy in) Report “Bảng điểm cá nhân” có dạng như sau: Học viện KTQS Phòng Đào tạo Bảng điểm cá nhân
  14. Simpo PDF Merge and Split UnregisteredHọ tên: , Version - Ngày sinh Loại hình đào tạo: , Ngành: ., Khoá học: STT Mã môn Tên Số Điểm 1 Điểm 2 Điểm 3 Ghi chú môn ĐVHT Điểm trung bình chung toàn khoá: . Xếp loại: .
  15. Simpo PDF Merge and Split UnregisteredBài 2 - Tổng Version quan -về visual foxpro I. Cài đặt visual foxpro Công cụ Visual Foxpro 6.0 là một thành phần trong bộ Visual Studio của Microsoft. Do đó cần cài đặt bộ Visual Studio và lựa chọn thành phần Visual Foxpro. [Start menu -> Visual Foxpro một thành phần của bộ Visual Studio] Bộ Visual Foxpro 7.0 (8.0, 9.0) được phát triển độc lập do đó có thể cài đặt riêng. Việc cài đặt các công cụ này tương đối đơn giản và giống với các phần mềm khác. Do đó việc cài đặt công cụ này các bạn tự tham khảo. II. Một số thành phần trong giao diện của Visual foxpro [Chạy Foxpro -> Giao diện chính của Visual Foxpro 6.0] Cửa sổ lệnh (Command Windows) Cho phép thực hiện các câu lệnh (Command). Ví dụ: Lệnh Create, Use, Browse [Chạy Foxpro -> Cửa sổ lệnh] Các menu của Foxpro (Tham khảo tài liệu) Các Tools bar của Foxpro (tham khảo tài liệu) Tạo mới một Project Việc phát triển một ứng dụng trong Visual Foxpro thường được tổ chức thành một Project - Dự án. Việc tạo mới một Project có thể được thực hiện bằng 1 trong hai cách sau: Cách 1: Trong cửa sổ lệnh gõ vào lệnh CREATE PROJECT Cách 2: Vào menu File ->Chọn New, khi đó giao diện New của Visual Foxpro xuất hiện như hình:
  16. Simpo PDF Merge and Split Unregistered Version - Tiếp đến chọn File type = Project (Mặc định) rồi chọn New file để tạo một Project trống hoặc Wizard để tạo một Project theo một trong các mẫu thiết kế sẵn của Microsoft, ở đây chúng ta sẽ chọn New file. Khi chọn New file hộp thoại Create hiển thị cho phép nhập vào tên project cần tạo, tiếp chọn chọn Save. Kết thúc việc tạo mới cửa sổ Project Manager xuất hiện (xem phần tiếp theo) cho phép quản lý, làm việc với Project này. Cửa sổ Project (Project Manager) [Chạy Foxpro -> Project Manager] Các thành phần chính trong Project Manager (Giới thiệu chi tiết các thành phần này) + Data: Database, Free Tables, Queries + Documents: Forms, Reports, Labels. + Class + Code: Program, API Libraries, Applications + Other: Menu, Text file, Other file III. Những nét đặc trung cơ bản 1. Công cụ quản lý ứng dụng - Project manager đem lại một cách nhìn tổng quan, hiệu quả trong việc phát triển một ứng dụng nào đó. 2. Công cụ trực quan cho phép thiết kế giao diện được nhanh chóng, đẹp.
  17. Simpo PDF3. MergeCông c andụ Report Split Designer Unregistered tiện dụng, Version cho phép - tạo ra nhiều report đa dạng. 4. Công cụ tool tip trong Visual Foxpro 7.0 trợ giúp nhanh và hữu hiệu với việc lập trình. Bài tập 1. Cài đặt Visual Foxpro 6.0 hoặc 7.0 2. Tạo thư mục QLDIEM trên ổ đĩa C: 3. Tạo shortcut trên Destop đến chương trình Visual Foxpro và đặt lại thuộc tính [Start in] vào thư mục C:\QLDIEM (như hình vẽ). 4. Tạo Project QLDIEM trống (Project sẽ được lưu trong thư mục C:\QLDIEM).
  18. Simpo PDF Merge and SplitBài Unregistered 3 - Các thành Version phần -c bản của ngôn ngữ I. từ khóa, kí hiệu, LệnH Từ khóa (Key Word): Là các từ mà Visual Foxpro đã sử dụng cho một mục đích nào đó. Và người dùng không được phép đặt tên trùng với từ khóa. Tham khảo tài liệu về tất cả các khóa của Visual Foxpro. Trong Foxpro từ khoá có thể không cần viết đầy đủ mà chỉ cần viêt 4 ký tự đầu của từ khoá đó, ví dụ từ khoá CREATE có thể chỉ cần viết Crea (Visual Foxpro không phân biệt chữ hoa, chữ thường). Kí hiệu comment: Đối với phần cuối 1 dòng dùng kí tự && Với cả dòng dùng ký tự * hoặc && Lệnh của Visual Foxpro Trong Visual Foxpro có hia loại câu lệnh: 1. Các câu lệnh có thể thực hiện trực tiếp từ cửa sổ lệnh (Command Windows) - gọi là Lệnh trực tiếp , 2. Các lệnh chỉ thực hiện trong chương trình. Các lệnh trực tiếp cũng thực hiện được trong chương trình. Cấu trúc lệnh trực tiếp của Foxpro có dạng: [Các tham số]  Trong đó: - Động từ tiếng anh (tương ứng với công việc cần làm); [Tham số] - Các tham số trong lệnh của fox có thể có, có thể không, hoặc có thể có nhiều; trường hợp có nhiều tham số thì thứ tự các tham số này có thể không quan trọng. Một số lệnh trực tiếp của Visual Foxpro 1. Lệnh ?, ?? -> In kết quả lên màn hình 2. QUIT -> Thoát khỏi foxpro 3. CLEAR -> Xoá màn hình 4. SET DEFAULT TO -> Thiết lập đường dẫn mặc định 5. SET DATE -> Thiết lập ngày tháng II. kiểu dữ liệu Kiểu dữ liệu là thuộc tính gắn liền với biến hay trường trong các bảng. Các kiểu dữ liệu trong Visual Foxpro gồm có: Character (Xâu kí tự), Date và DateTime (Ngày, giờ), Currency (Tiền tệ), Logic, Numeric (Số); các kiểu chỉ dùng cho các trường của bảng gồm có: Memo (Văn bản), General (Tổng hợp - ảnh). 1. Character
  19. Simpo PDFLà xâu Merge ký tự a and->z, ASplit->Z, Unregistered0 ->9 và một số Version các ký tự - khác như +.-,*, /, = . Hằng xâu kí tự: Đặt trong dấu “”, ‘’, hoặc []; ví dụ “Hà nội”, ‘Việt nam’ hoặc [Visual Fox] Các phép toán: +: Nối chuổi 2 vào chuổi 1. -: Nối 2 chuỗi nhưng huỷ bỏ các khoảng trắng trước và sau mỗi chuỗi. $: Chứa ở trong (st1$st2 – st1 có trong st2 ->TRUE, ngược lại ->FALSE) 2. Date and DateTime Kiểu ngày, giờ dùng 8 bytes để lưu trữ. Hằng Date và DateTime: {^yyyy-mm-dd [hh[:mm[:ss]][alp]]}; ví dụ: {^2005-12-10}, {^2005-12- 10 10:20:25} Các phép toán: Ngày + Số = Ngày Số + Ngày = Ngày Ngày - Số = Ngày Ngày - Ngày = Số Tương tự cho ngày giờ 3. Currency Kiểu tiền tệ (thực chất là kiểu số và thêm kí tự tiền $ hoặc ký tự bất kỳ khác) vào số đó. Kiểu này thường ít được sử dụng. 4. Logic Kiểu logíc, tập giá trị là Đúng hoặc Sai Hằng Logic: .T. ->TRUE đúng (hoặc .t.); .F. ->FALSE sai (hoặc .f.) Các phép toán: NOT, AND, OR. 5. Numeric Kiểu số, dùng tối đa 20 byte. Hằng số: 10, 20, 15.7 Các phép toán: +, - , *, /, ^ (mũ), % (chia lấy phần dư) 6. Memo
  20. Simpo PDFKiểu kíMerge ức, dùng and 4 byteSplit đ Unregisteredể ánh xạ đến 1 fileVersion khác có - mở rộng là fpt. Kiểu này cho phép lưu 1 văn bản rất dài. 7. General Kiểu kí ức, dùng 4 byte để ánh xạ đến 1 file khác có phần mở rộng là fpt. Kiểu này cho phép lưu 1 đối tượng bất kỳ như file văn bản, file word, file excel, file ảnh và thường được sử dụng để lưu trữ file ảnh. III. Biến Có 3 loại biến: Biến do người sử dụng tự định nghĩa: Biến là trường của bảng đang mở; hoặc Biến hệ thống (do Visual Foxpro tạo ra). Đối với các biến do người sử dụng định nghĩa: Là đối tượng lưu trữ dữ liệu trong bộ nhớ, được xác định qua tên biến, kiểu và phạm vi tác động của biến o Tên biến: Dài không quá 254 kí tự, có thể dùng các chữ cáI, chữ số, dấu gạch dưới (_) nhưng không được bắt đầu bằng chữ số (và không được trùng với từ khoá). o Kiểu: Các kiểu dữ liệu kể trên trừ kiểu General. Kiểu của biến trong Visual Foxpro có thể thay đổi. o Phạm vi tác động của biến phụ thuộc vào vị trí mà nó được khai báo. Ví dụ Chương trình chính Biến A Chương trình Con 1 Biến B Gọi chương trình con 2 Chương trình con 2 Biến C Trong ví dụ trên: Biến A có tác động trong toán bộ chương trình chính, chương trình con 1 và chương trình con 2; Biến C chỉ có tác động trong chương trình con 2; Biến B có tác động trong chương trình con 1, nếu trong chương trình con 1 có lời gọi chương trình con 2 thì biến B có thể
  21. Simpo PDFtác động Merge trong and chương Split tr Unregisteredình con 2 (nhưng Version nếu lời -gọi chương trình con 2 tại vị trí khác mà ở đó không khai báo B thì lúc đó sẽ phát sinh lỗi). Khai báo biến: Trong Visual Foxpro thực ra không có khảI niệm khai báo biến (như trong PASCAL) mà các biến sẽ được sinh ra khi thực hiện lệnh gán (=) hoặc lệnh STORE. Ví dụ o A=150 -> Tạo ra biến có tên là a, kiểu là số o STORE ”Visual Foxpro“ TO monhoc -> Tạo ra biến monhoc, kiểu xâu kí tự Xoá bỏ các biến: Khi không dùng nữa thì có thể xoá bỏ các biến để giảI phóng bộ nhớ. Visual Foxpro dùng lệnh RELEASE để xoá bỏ các biến. Ví dụ RELEASE a; RELEASE monhoc. Biến trường và biến hệ thống có phạm vi tác động trong toàn bộ chương trình. IV. Hằng Là đối tượng dữ liệu mà giá trị của nó chỉ xác định 1 lần khi khai báo và không thay đổi được. Hằng cũng được xác định qua tên, kiểu và phạn vi tác động của nó. Khai báo hằng: Visual Foxpro dùng từ khoá #DEFINE để khai báo hằng. Kiểu của hằng phụ thuộc vào kiểu của biểu thức Phạn vi tác động của hằng được xác định tương tự với Biến. V. biểu thức Biểu thức được tạo nên từ các biến, hằng, hàm và các toán tử (phép toán) theo một qui tắc nào đó (các toán tử và toán hạng phảI phù hợp nhau). Thứ tự ưu tiên của các phép toán trong 1 biểu thức 1. Các phép số học: Dấu âm, dương Luỹ thừa Nhân, chía Phần dư Cộng, trừ 2. Các phép chuỗi: +, - 3. Các phép quan hệ: =, ,>=, 4. Các phép logic: NOT, AND, OR Sử dụng cập dấu () trong biểu thức để tránh sai sót về thứ tự ưu tiên các phép toán.
  22. Simpo PDFVI. Hàm Merge and Split Unregistered Version - Trong Visual Foxpro có hai loại hàm: Hàm do Visual Foxpro cung cấp và hàm do người sử dụng tự tạo ra. Hàm bao giờ cũng trả về một giá trị nào đó. Trong phần này sẽ giới thiệu một số hàm do Visual Foxpro cung cấp. Hàm xâu kí tự 1. ALLTRIM(st), LTRIM(st), RTRIM(st) 2. LEFT(st,n), RIGHT(st,2), SUBSTRING(st,p,n) 3. AT(st1,st2,n), RAT(st1,st2,n) 4. LOWER(st), UPPER(st) 5. ASC(ch), CHR(n) 6. DTOC(d) 7. LEN(st) 8. STR(ex) Hàm Date và DateTime 1. DATE() 2. DATETIME() 3. TIME() 4. CTOD(st) 5. DAY(d) 6. MONTH(d) 7. YEAR(d) Hàm số 1. ABS(ex) 2. INT(ex) 3. ROUND(ex,n) 4. VAL(st) Hàm tự tạo của người sử dụng Cú pháp
  23. Simpo PDFFUNCTION Merge and Split Unregistered Version - [PARAMETER ] (Các lệnh của fox) RETURN Trong đó TenHam: Tên hàm do người sử dụng tự định nghĩa Parameter: Từ khoá cho phép truyển vào các tham số cho hàm Bài tập 1. Giả sử Họ tên người trong tiếng Việt luôn có dạng “Họ Đệm Tên”, trong đó các phần Họ, Đệm, Tên luôn cách nhau 1 dấu cách; phần Đệm có thể có hoặc không hoặc có nhiều hơn 1 chữ. Hãy viết hàm TENVN(hoten) để lấy ra phần Tên của tên người trong tiếng Việt, trong đó hoten là xâu họ tên người trong tiếng Việt.
  24. Simpo PDF Merge and Split UnregisteredBài 4 - thi ếtVersion kế database - và tables I. Giới thiệu Bảng dữ liệu (gọi tắt là bảng) là nơi lưu trữ dữ liệu và nó đóng một vai trò quan trọng trong các bài toán quản lý. Xuất phát từ việc phân tích yêu cầu, các mẫu biểu của bài toán để từ đó đưa ra cấu trúc các bảng sao cho phù hợp, đáp ứng các yêu cầu đặt ra là một công việc khá phức tạp, đòi hỏi phảI có kiến thức và kinh nghiệm trong lĩnh vực cụ thể đó. Có thể tham khảo một số vấn đề giúp các bạn rõ hơn trong việc phân tích, thiết kế dữ liệu trong tài liệu [1] từ trang 131 đến 142, hoặc tham khảo tài liệu [3]. II. Tạo Database 1. Tạo mới Database Câch 1: Sử dụng câu lệnh Bằng cách này chúng ta có thể tạo ta một Database, tuy nhiên database này là một Database độc lập (không liên quan đến Project nào) Câu lệnh: CREATE DATABASE  Kết thúc lệnh này Visual Foxpro sẽ tạo ra file Database có tên là TenDatabase (phần mở rộng là DBC) Về sau có thể thêm Database này vào trong 1 Project nào đó. Cách 2: Sử dụng Project Manager Bằng cách này thì Database được tạo ra sẽ là một thành phần của Project 1. Mở Project QLDIEM 2. Trong Tab Data, chọn mục Database rồi chọn New, khi đó giao diện New database xuất hiện như hình 1. Hình 1 - Hộp thoại New database
  25. Simpo PDF3. Ti ếpMerge đến chọnand Split New DatabaseUnregistered để tạo Version một database - trống (chọn Database Wizard để tạo một Database theo một trong các mẫu thiết kế sẵn của Visual Foxpro). 4. Tiếp đến Visual Foxpro yêu cầu nhập vào tên Database (file có phần mở rộng là DBC), rồi chọn Save để ghi lại. Khi đó giao diện Database designer xuất hiện như hình 2. 5. Giao diện Database Designer cho phép xem một cách tổng thể các thành phần (bảng, view, mỗi quan hệ giữa các bảng ) trong csdl. Hình 2 cho ta thấy Database Diem tại thời điểm này còn trống, chúng ta sẽ trở lại giao diện này trong các phần sau (đóng cửa sổ này lại). Hình 2 - Giao diện Database Designer 2. Sửa đổi Database 1. Trong Project Manager, chọn Tab Data, tiếp đến chọn Database và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước) . 2. Chọn Database cần sửa (vì trong một Project có thể có nhiều hơn một Database) rồi chọn lệnh Modify, khi đó cửa sổ Database designer (hình 2) xuất hiện. 3. Thêm vào Project một Database đã có Trường hợp Project sử dụng một Database đã có (đã thiết kế trước đó) thì chúng ta có thể thêm (Add) Database đó vào Project. 1. Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database (đặt vệt sáng ở mục này). 2. Chọn lệnh Add, khi đó sẽ xuất hiện cửa số open file (hình 3) cho phép chúng ta chọn csdl cần thêm vào.
  26. Simpo PDF Merge and Split Unregistered Version - Hình 3 - Hộp thoại Open file (Select Database) 4. Loại bỏ một Database khỏi Project Khi không cần dùng một Database nào đó, chúng ta có thể loại bỏ Database đó khỏi Project như sau: 1. Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước). 2. Chọn Database cần bỏ, tiếp đến chọn lệnh Remove khi đó xuất hiện hộp thoại như hình 4. Hình 4 - Hộp thoại Remove Database 3. Chọn Remove (khỏi Project ) nếu không muốn xoá hẳn Database này; chọn Delete nếu muốn xoá hẳn Database này; chọn Cancel khi muốn huỷ bỏ thao tác này. III. Tạo bảng
  27. Simpo PDF1. Tạo Merge mới Tables and Split Unregistered Version - Câch 1: Sử dụng câu lệnh Bằng cách này chúng ta có thể tạo ta một Table, tuy nhiên Table này là một Table độc lập (không liên quan đến Project nào). Câu lệnh (dạng đơn giản): CREATE TABLE (FieldName1 Ftype1(width1) [, ]) Trong đó: TableName - tên bảng (không chứa dấu cách), FieldName1 - Tên trường 1, Ftype1 - Kiểu trường 1 (dùng các chữ cái đầu của kiểu trong fox để mô tả), with1 - độ rộng của trường. Tương tự như vậy cho trường thứ 2. Ví dụ: CREATE TABLE Hososv(masv C(10), Hoten C(30)) Câch 1: Sử dụng Project Manager 1. Trong Project Manager chọn Tab Data, chọn mục Database và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước). 2. Chọn Database cần làm việc và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước), tiếp đến chọn Tables rồi chọn New. Khi đó giao diện New table có dạng như hình 5. Hình 5 - New table 3. Tiếp đến chọn New Tbale để tạo một Table trống (chọn Table Wizard để tạo một Table theo một trong các mẫu thiết kế sẵn của Visual Foxpro). 4. Tiếp đến Visual Foxpro yêu cầu nhập vào tên Table (file có phần mở rộng là dbf), rồi chọn Save để ghi lại. Giao diện Table Designer xuất hiện như hình 6. Giao diện Table Designer
  28. Simpo PDF Merge and Split Unregistered Version - Hình 6 - Table Designer o Tab Field: Phần khai báo chính cho 1 trường của bảng a. Name : Tên trường b. Type: Kiểu c. Width, Decimal d. Index: Sắp xếp (Ascending, Descending, None) e. Null: Checked or Unchecked f. Format: Định dạng dữ liệu hiển thị (sử dụng các ký tự qui định cho fornat của Foxpro xem bảng sau) Format Applies to Description: Code: data of type: ! Force text to uppercase. Character only B Left justify . All types J Right justify. All types I Center justify. All types L Leading zeros. Numeric only Numeric, Date, Z Blank if zero. and DateTime
  29. Simpo PDF( MergeSurround and Split negative Unregistered numbers with Version (). - Numeric only C Appends " CR" to positive, non-zero numbers. Numeric only X Appends " DB" to negative, non-zero numbers. Numeric only $ Uses currency notation. Numeric only D Use current SET DATE setting. All types E Display as if SET DATE BRITISH was in effect. All types YL Display using system Long Date format. Date YS Display using system Short Date format. Date Prevents non-formatting characters in the template string from replacing the corresponding character of the field expression value. When @R is Character and R used, the template string interleaves instead of overlaying. (See Numeric example below.) g. Input Mask: Định dạng dữ liệu nhập (sử dụng các ký tự qui định cho Input mask của Visual Foxpro - xem bảng sau) cMask Description ! Converts lowercase letters to uppercase letters. # Permit entry of digits, spaces, and signs, such as the minus sign ( – ). Displays the current currency symbol, as specified by the SET CURRENCY $ command, in a fixed position. Displays floating currency symbol that always appears adjacent to the digits in a $$ spinner or text box. Displays the current digit-grouping, or separator, symbol as set by the Regional and , Language Options setting in the Windows Control Panel. Displays the current decimal point character as specified by the SET POINT . command setting. (Default is a period (.)) 9 Permits entry of digits and signs. A Permits alphabetic characters only. H Prevents entry of non-hexadecimal symbols in the specified position. L Permits logical data only. N Permits letters and digits only. U Permits alphabetic characters only and converts them to uppercase (A - Z). W Permits alphabetic characters only and converts them to lowercase (a - z). X Permits any character. Permits the letters, Y, y, N, and n for the logical values True (.T.) and False (.F.), Y respectively. h. Rule: Luật kiểm tra đối với dữ liệu của trường này (dữ liệu nhập vào cho trường này phải thoả mãn luật này) i. Message: Thông báo khi dữ liệu nhập không thoả mãn luật qui định với trường ở Rule. j. Default: Giá trị mặc định cho trường dữ liệu này khi thêm mới 1 bản ghi. k. Display library, Display class: Xác định lớp gắn với ứng trường này (ví dụ nếu kiểu của trường này là Character - > Lớp mặc định được dùng là Textbox, Là Logic ->Lớp mặc
  30. Simpo PDF Mergeđịnh and đư ợcSplit dùng Unregistered là Checkbox ),Version người -sử dụng có thể tạo ra các lớp của riêng mình và sử dụng ở đây. o Tab Index: Phần khai báo các index (chi mục) cho bảng a. Order: Ascending, Đescening b. Name: Tag name c. Type: Kiểu Number type Description allowed Primary Does not permit duplicate values in the specified fields or expression. One per table Many per Candidate Does not permit duplicate values in the specified fields or expression. table Many per Regular Permits duplicate values in the specified fields or expression. table Many per Binary Indexes records based on a valid and non-null logical expression. table Selects a subset of records based on the first occurrence of a specified Many per Unique value. Included for backward compatibility. table d. Expression: Biểu thức index e. Filter: Biểu thức lọc o Tab Table: Tính chất chung của bảng (hình 7)
  31. Simpo PDF Merge and Split Unregistered Version - Hình 7 a. Name: Tên bảng b. Database: Thuộc vào Database nào c. Rule: Luật cho bản ghi. Một bản ghi chỉ được cập nhật khi thoả mã luật này (ví dụ) d. Message: Thông báo lỗi khi luật Rule không thoả mãn. e. Insert Trigger: Tại đây cho phép nhập vào 1 Biểu thức, biểu thức này sẽ được tính khi sảy ra sự hiện Insert đối với bảng này. f. Update Trigger, Delete Trigger (tương tự như Insert Trigger) Bài tập 1. Mở Project QLDIEM, tạo Database DIEMDB để lưu trữ cơ sở dữ liệu cho hệ thống quản lý điểm. 2. Tạo các bảng cho Database DIEMDB như đã nêu trong Bài tập môn học. Tự xác định các tính chất Format, Caption, Input Mask, Rule cho các trường của các bảng này.
  32. Simpo PDF MergeBài and Split 5 Unregistered- Làm vi Versionệc với - bảng và bản ghi I. Làm việc với bảng Tạo bảng Lệnh: CREATE TABLE (FieldName1 Ftype1(width1) [, ]) (xem bài 4) CREATE [TableName] (Tương tự lệnh CREATE TABLE) Mở một bảng đã có Lệnh: USE [ALIAS ] [EXCLUSIVE] Trong đó TableName là tên bảng cần mở hoặc khi không nhớ có thể dùng dấu ? để mở hộp thoại Open File; tùy chọn ALIAS cho phép đặt tên “vùng” làm việc với tên là , khi không co tùy chọn này thì tên “vùng” của bảng được mở trùng với tên bảng; tùy chọn EXCLUSIVE không cho phép nhiều người cùng sử dụng (trên mạng), tham số này thường được dùng khi cần mở bảng để sửa chữa.
  33. Simpo PDFVí Merge dụ: and Split Unregistered Version - USE HOSOSV -> (tên vùng làm việc là HOSOSV) hoặc USE HOSOSV ALIAS SINHVIEN -> (tên vùng làm việc là SINHVIEN) hoặc USE ? -> Tiếp đến chọn file (bảng) cần mở Sửa cấu trúc của bảng Lệnh: MODIFY STRUCTURE Lệnh này cho phép sửa đổi cấu trúc của bảng đang mở, giao diện này chính là giao diện CREATE TABLE (xem bài 4). Trường hợp chưa có bảng nào mở thì lệnh này sẽ mở hộp thoại Open file cho phép chọn file(bảng) cần mở và sau đó sẽ tiếp tục. Ví dụ Lệnh:
  34. Simpo PDFALTER Merge and Split Unregistered TABLE Version - [COLUMN] FiledName1 FType1(n) Lệnh này cho phép tự động sửa chữa cấu trúc của 1 bảng nào đó (thường sử dụng trong chương trình). Ví dụ USE DIEM EXCLUSIVE ALTER TABLE DIEM ADD COLUMN Test1 C(20) - >Thêm trường Test1 là C ALTER TABLE DIEM ALTER COLUMN Test1 N(20) ->Sửa trường Test1 thành N ALTER TABLE DIEM DROP COLUMN Test1 - >Xóa trường Test1 Đóng bảng đã mở Lệnh USE && Không tham số sẽ đóng bảng hiện thời USE IN Trong đó AliasName là tên vùng một bảng nào đó đang mở, ví dụ: USE IN DIEM
  35. Simpo PDFII. thêm,Merge and sửa, Split xoáUnregistered các bản Version ghi - Con trỏ bản ghi Con trỏ bản ghi trỏ đến bản ghi hiện thời của bảng đang mở. Khi mở bảng con trỏ bản ghi sẽ đặt ở bản ghi đầu tiên. Lệnh: GO TOP -> Chuyển đến bản ghi đầu tiên GO BOTTOM -> Chuyển đến bản ghi cuối cùng GO -> Chuyển đến bản ghi thứ n Ví dụ USE DIEM GO TOP GO 10 GO BOTTOM Lưu ý: Nếu n lớn hơn số bản ghi hiện có của bảng thì chương trình sẽ trả về thông báo Record is out of range. Lệnh
  36. Simpo PDFSKIP Merge and Split Unregistered Version - Dịch chuyển con trỏ bản ghi đi n bản ghi kể từ bản ghi hiện thời (n có thể >0 hoặc Trong đó BieuThuc là một biểu thức Logic. Lệnh này sẽ đưa con trỏ bản ghi đên bản ghi đầu tiên thoả mãn BieuThuc nếu tìm thấy. Ví dụ: USE HOSOSV LOCATE FOR (Hoten=”Phan Văn Việt”) and (malop=”3A-04”)
  37. Simpo PDF MergeLOCATE and Split Unregistered FOR (Hoten=”Phan Version - Văn Việt”) and (gioi=.F.) Lưu ý: Khi tìm thấy thì hàm FOUND() sẽ trả về giá trị TRUE, ngược lại trả về FALSE. Lệnh COUNTINUE Khi sử dụng lệnh LOCATE, ta có thể dùng lệnh COUNTINUE để tìm bản ghi tiếp theo thoả mãn . Thêm mới bản ghi Lệnh APPEND [BLANK] Lệnh này cho phép thêm 1 bản ghi vào bảng và hiển thị giao diện cập nhật. Ví dụ USE HOSOSV APPEN Khi đó giao diện Appen xuất hiện như hình sau:
  38. Simpo PDF Merge and Split Unregistered Version - Lưư ý: Bản ghi này chỉ thực sự được thêm vào nếu có cập nhật thông tin vào 1 trong các trường của bản ghi đó. Trường hợp nếu muốn thêm một bản ghi trống thì có thể thêm vào tham số BLANK, khi sử dụng tham số này thì bản ghi sẽ thực sự được thêm vào CSDL cả khi không cập nhật 1 trường thông tin nào (thường sử dụng trong chương trình). Lệnh BROWSE [FIELD ] [ FOR ] [FONT [, FontSize]] [STYLE cFontStyle] [ TITLE ]
  39. Simpo PDFBrowse Merge and là Split m ộtUnregistered lệnh đa Version năng - phép thực hiện hầu hết các công việc với bản ghi như xem, sửa, xóa, thêm mới Trong cửa sổ BROWSE, sử dụng phím Ctrl+Y để thêm 1 bản ghi trống vào bảng. Ví dụ BROW Tùy chọn FIELD cho phép chỉ hiển thị các trường trong , ví dụ chỉ hiện thị tên và ngày sinh của HOSOSV: BROW FIELD Hoten,ngaysinh. Tùy chọn FOR cho phép chỉ hiển thị các bản ghi mà BieuThucLogic =TRUE, ví dụ chỉ thiển thị những người thuộc lớp “3A-04”. BROW FOR malop=”3A-04”. Tùy chọn FONT, STYLE cho phép chọn Font chữ dùng trong cửa sổ Brow, ví dụ sử dụng font “.vntime”: BROW FONT “.vntime”,12 Tùy chọn TITLE cho phép đặt tên cho cửa sổ Browse là TieuDe. ví dụ BROW FONT “.vntime”,12 TITLE “Ho so sinh vien” Lệnh
  40. Simpo PDFINSERT Merge and Split INTO Unregistered (FieldName Version - List) VALUE(Value List) Thêm mới 1 bản ghi đồng thời xác định giá trị cho các trường của bản ghi đó. Ví dụ USE HOSOSV INSERT INTO HOSOSV(masv,hoten) VALUE(“00001”,”TEST”) Sửa bản ghi Lệnh EDIT -> Sửa bản ghi - tương tự giao diện Append BROWSE -> Xem mục trên Lệnh REPLACE [Scope] [FOR ] Lệnh này cho phép cập nhật giá trị của FieldName1 với giá trị của BieuThuc1, FieldName2 với giá trị của
  41. Simpo PDFBieuThuc2 Merge and Split Unregistered Lệnh nVersionày thư - được sử dụng trong chương trình. Tham số Scope xác định phạm vi tác động của lệnh, có thể là: ALL :Tất cả các bản ghi NEXT n : n bản ghi tính từ bản ghi hiện thời RECOR n : Bản ghi thứ n REST : Từ bản ghi hiện thời đến cuối Trường hợp mặc định là bản ghi hiện thời Tùy chọn FOR cho phép thực hiện lệnh với những bản ghi thỏa mãn BieuThucLogic. Ví dụ: USE HOSOSV REPLACE ALL ghichu with “Ghi chu ALL” GO 5 REPLACE ghichu with “Ghi chu 5” GO 15 REPLACE NEXT 10 ghichu with “Ghi chu Next 10” REPLACE REST ghichu with “Ghi chu REST” Xoá bản ghi
  42. Simpo PDFL Mergeệnh and Split Unregistered Version - DELETE [Scope] [FOR ] Đánh dấu xóa các bản ghi nằm trong Scope và thỏa mãn BieuThucLogic. Việc xóa các bản ghi trong các bảng được thực hiện theo 2 bước, bước 1: là đánh dấu xóa các bản ghi, bước 2: xóa các bản ghi đã đánh dấu khỏi bảng, lệnh DELETE thực hiện bước 1. Tùy chọn Scope và FOR như mục trên. Ví dụ USE HOSOSV DELELE ALL FOR empty(malop) Lệnh PACK Lệnh PACK thực hiện bước thứ 2 là xóa các bản ghi đã đánh dấu xóa. ví dụ PACK Lệnh RECALL [Scope] [FOR ]
  43. Simpo PDFĐ Mergeối với and Split các Unregistered bản ghi Version đã b ị- đánh dấu xóa (bằng lệnh DELETE) khi cần có thể khôi phục lại bằng lệnh RECALL. Tùy chọn Scope và FOR tương tự mục trên. Lệnh ZAP Trường hợp đã xác định rõ cần xóa toàn bộ các bản ghi khỏi bảng thì có thể sử dụng lệnh ZAP (ZAP = DELETE +PACK). III. sắp xếp, lọc các bản ghi Sắp xếp Lệnh INDEX ON [ASCENDING | DESCENDING] Với các bảng dữ liệu, có thể sắp xếp các bản ghi theo một thứ tự (tiêu chuẩn nào đó) nào đó. Lệnh INDEX cho phép tạo ra các tiêu chuẩn sắp xếp (chỉ mục - index) đối với bảng, tham số chính là tiêu chuẩn sắp xếp.
  44. Simpo PDFTùy Merge ch andọn Split TO Unregistered IDXFile Version cho phép - tạo ra file chỉ mục dạng IDX, với tên file là IDXFile và phần mở rộng là IDX (tạo chỉ mục dạng này sẽ không thể chọn được chiều DESCENDING và mỗi file chỉ xác định 1 tiêu chuẩn sắp xếp). Tùy chọn TAG TagName cho phép tao ra một chỉ mục có tên là TagName trong file chỉ mục kết hợp (file chỉ mục này có tên trùng với tên bảng, và phần mở rộng là CDX, tạo chỉ mục dạng này sẽ cho phép chọn ASCENDING hoặc DESCENDING và mỗi file có thể có chứa nhiều tiêu chuẩn sắp xếp). Ví dụ USE HOSOSV INDEX ON masv TO masvidx BROW INDEX ON hoten TAG hoten2 DESCENDING BROW Lệnh SET ORDER TO [IDXFile | TagName] Lệnh này cho phép thay đổi tiêu chuẩn sắp xếp của bảng. Trong đó: IDXFile - tên file dạng IDX (đã tạo bằng lệnh
  45. Simpo PDFINDEX Merge and trư Splitớc Unregistered đó); TagName Version - Tên chỉ mục trong file kết hợp (file dạng CDX). Ví dụ USE HOSOSV SET ORDER TO Masv BROW SET ORDER TO Hoten2 BROW SET ORDER TO masvidx SET ORDER TO (không tham số) dùng để bỏ việc sắp xếp (trở lại thứ tự nhập). Lọc Lệnh SET FILTER TO Trường hợp chỉ cần làm việc với một số các bản ghi nào đó (lọc - filter) thì chúng ta sử dụng lệnh này, trong đó BieuThucLogic là tiêu chuẩn để lọc. Ví du USE HOSOSV SET FILTER TO malop=”3A-01” BROWSE SET FILTER TO ngaysinh=date() BROWS TITLE “Sinh nhat: ”+ DTOC(date())
  46. Simpo PDF MergeSET and FILTER Split Unregistered TO (không Version th - số) dùng để bỏ lọc. IV. Làm việc với nhiều bảng Vùng làm việc Visual Foxpro cho phép mở nhiều bảng dữ liệu đồng thời, mỗi bảng trên một vùng làm việc (WorkArea) nhất định. Visual Foxpro cho phép mở tối đa là 255 vùng làm việc đồng thời, mỗi vùng được xác định qua tên hoặc số hiệu vùng. Lệnh SELECT Lệnh này cho phép chọn vùng làm việc, trong đó: n là số thứ tự của vùng cần chuyển đén; TableName là tên bảng hoặc aliasname. Ví dụ SELECTE A USE DMLOP ALIAS LOP SELECTE B USE HOSOSV ALIAS SINHVIEN SELECTE 0 USE DIEM
  47. Simpo PDFTrong Merge andví dSplitụ tr Unregisteredên đã tạo Version ra 3 v- làm việc: Vùng 1 (hoằc vùng A hoặc LOP), Vùng 2 (hoặc vùng B hoặc SINHVIEN), Vùng 3 (hoặc DIEM). Lưu ý: Khi chọn n=0 thì Visual Foxpro sẽ tự động chọn vùng cao nhất cong trống. Liên kết giữa các bảng
  48. Simpo PDFVisual Merge and Foxpro Split Unregistered cho phép Version đ ặt- liên kết (mối “quan hệ”) giữa các bảng để có thể tạo ra một bảng to hơn từ các bảng con. Lệnh SET RELATION TO INTO Lệnh này cho phép đặt quan hệ từ bảng hiện thời vào bảng được mở ở vùng n (hoặc TableName hoặc AliasName), trong đó BieuThuc là tiêu chuẩn đế đặt quan hệ. Lưu ý: Bảng được mở trong vùng AliasName phải được index theo BieuThuc này rồi. Ví dụ: SELECTE A USE DMLOP ALIAS LOP INDE ON ma TO malopidx BROW SELECT B USE HOSOSV ALIAS SINHVIEN SET RELATION TO malop INTO LOP
  49. Simpo PDF MergeBROW and Split Unregistered Version - (trong ví dụ này bảng DMLOP gọi là bảng cha, bảng HOSOSV gọi là bảng con) Khi con trỏ di chuyển trong bảng con thì con trỏ trong bảng cha cũng thay đổi tương ứng. V. Một số hàm và lệnh khác Một số hàm Hàm RECNO() - Trả về số hiệu bản ghi hiện thời Hàm RECCOUNT() - Trả về số bản ghi hiện có của bảng Hàm ALIAS() - Định danh của vùng hiện thời Hàm DBF() - Tên file DBF Hàm EOF(), BOF() - Trạng thái TRUE nếu con trỏ vượt quá Beginning và End Một số lệnh khác LIST [Scope] [Field ] [FOR ]
  50. Simpo PDFCOUNT Merge and [Split TO Unregistered VarName Version ] [ -FOR expL1 ] [ While expL2 ] [ Phạm vi ] AVERAGE expN TO VarName [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] SUM TO FOR expL1 ] [ While expL2 ] [ Phạm vi ] CALC TO [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] max(expr), min(expr), aver(expN) COPY TO [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] COPY STRUCTURE TO [EXTENDED] APPEND FROM [ FOR ] Bài tập 1. Cập nhật dữ liệu cho tất cả các bảng của Database DIEMDB (đã tạo trong bài 4, dữ liệu là danh sách lớp). 2. Thực hiện các ví dụ trong bài học.
  51. Simpo PDF Merge and Split UnregisteredBài 6 - VersionTạo queries - và views I. Thiết lập quan hệ giữa các bảng Trên thực tế, các bảng của CSDL thường có quan hệ nào đó với nhau. Mối quan hệ giữa các bảng có thể thiết lập qua lệnh (Lệnh SET RELATION - xem bài 5) - mối quan hệ tạm thời , hoặc trong quá trình thiết kế cơ sở dữ liệu - mối quan hệ bền vững. Trong phần này chúng ta chỉ xét mối quan hệ bền vững. Để đặt quan hệ giữa các bảng thì việc đầu tiên cần làm đó là xác định các Index cho bảng. Việc xác định các Index cho bảng có thể thực hiện qua lệnh (lệnh INDEX - xem bài 5) hoặc có thể xác định khi thiết kế bảng trong giao diện Table Designer. Tạo index trong Table Designer (Xem bài 4) Thiết lập quan hệ bền vững giữa các bảng trong CSDL Mối quan hệ bền vững được tạo trong quá trình thiết kế CSDL, và được lưu lại trong file csdl (DBC) và có những đặc điểm sau: - Được tự động sử dụng như các kết nối mặc nhiên (khi tạo Queries và Views) - Được thể hiện bằng các đường nối trong Database Designer. - Được thể hiện trong môi trường Data - Dùng để lưu thông tin về mối quan hệ toàn vẹn. Không giống như các mối quan hệ tạm thời được tạo bằng lệnh SET RELATION, mối quan hệ bền vững không không cần phải tạo lại mỗi khi sử dụng đến các bảng dữ liệu. Tuy nhiên bởi mối quan hệ bền vững không điều khiển các con trỏ bản ghi giữa các bảng dữ liệu nên mối quan hệ tạm thời vẫn rất cần thiết khi phát triển ứng dụng. Các bước thiết lập quan hệ bền vững 1. Mở Project 2. Chọn Tab Data 3. Chọn mục Database và mở rộng (expand) 4. Chọn Database cụ thể cần làm việc (DIEMDB) 5. Chọn mục Modify, khi đó giao diện Database Designer xuất hiện. 6. Trong giao diện Database Designer để tạo quan hệ giữa 2 bảng chỉ cần kéo-thả trường Index (Primary) từ bảng cha đến trường Index (Regular) của bảng con. ở đây cần lưu ý việc tạo Index cho các trường trước khi thiết lập quan hệ giữa các bảng.
  52. Simpo PDFSau Merge khi thi andết lập Split xong Unregistered quan hệ giữa cácVersion bảng ta- giao diện Database Designer có dạng như hình 6.1. Hình 6.1 Quan hệ giữa các bảng trong CSDL Đường nối thể hiện quan hệ giữa các bảng. Thiết lập quan hệ toàn vẹn giữa các bảng Thực chất là xác định các qui tắc ứng xử giữa các bảng có quan hệ với nhau. Các qui tắc đó sẽ kiểm xoát các việc như thay đổi (Update), Thêm (Insert), Xoá (Delete) sao cho vẫn đảm bảo mối quan hệ giữa các bảng này không bị vi phạm. Để thiết lập quan hệ toàn vẹn giữa các bảng, nháy đúp chuột trái vào đường liên kết bất kỳ giữa 2 bảng, tiếp đến chọn lệnh Referential Integrity như hình 6.2 Hình 6.2 Khi chọn Referential Integrity giao diện này xuất hiện như hình 6.3
  53. Simpo PDF Merge and Split Unregistered Version - Hình 6.3 Giao diện Referential Integrity, Rules For Updating Trong đó: - Dòng (trong grid phía dưới): Thể hiện các quan hệ hiện có của CSDL, các thông tin của một quan hệ gồm có: Bảng cha (Parent Table), Bảng con (Child Table), Biểu thức quan hệ trên bảng cha (Parent Tag), Biểu thức quan hệ trên bảng con (Child Tag). - Tab Rules for Updating: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi sửa đổi. Các qui tắc ứng xử ở đây là: o Ignore: Cho phép sửa các bản ghi liên quan trên bảng con một cách độc lập (không phụ thuộc vào bảng cha), đây là giá trị mặc định. Ví dụ o Restrict: Không cho phép sửa đổi các bản ghi trong bảng cha nếu tồn tại những bản ghi liên quan trong bảng con. Ví dụ o Cascade: Sửa tất cả những bản ghi có quan hệ trong bảng con với giá trị khoá mới tương ứng của bảng cha. Ví dụ - Tab Rules for Deleting: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi xoá. Các qui tắc ứng xử ở đây là: o Ignore: Cho phép xoá các bản ghi liên quan trên bảng con một cách độc lập (không phụ thuộc vào bảng cha), đây là giá trị mặc định. Ví dụ o Restrict: Không cho phép xoá các bản ghi trong bảng cha nếu tồn tại những bản ghi liên quan trong bảng con. Ví dụ
  54. Simpo PDF Mergeo andCascade: Split XoáUnregistered tất cả những Version bản ghi -có quan hệ trong bảng con tương ứng với bản ghi bị xoá của bảng cha. Ví dụ Hình 6.4 Rules For Deleting - Tab Rules for Inserting: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi thêm mới. Các qui tắc ứng xử ở đây là: Hình 6.4 Rules For Inserting o Ignore: Cho phép thêm các bản ghi vào bảng con một cách độc lập (không phụ thuộc vào bảng cha), đây là giá trị mặc định. Ví dụ
  55. Simpo PDF Mergeo andRestrict: Split Không Unregistered cho phép Versionthêm các b- ản ghi vào bảng con nếu không tồn tại một bản ghi tương ứng trong bảng cha. Ví dụ II. Tạo các queries Query: Công cụ truy vấn dữ liệu. Có thể tạo ra query với nhiều lý do khác nhau như: để tổ chức thông tin cho Report, để trả lời nhanh một câu hỏi Ví dụ, với bảng DIEM khi biết mã sinh viên và cần xem sinh viên đó có tên là gì? Bảng điểm của một môn học nào đó. Tạo mới một Query sử dụng Wizard 1. Trong Project Manager chọn Tab Data 2. Chọn Queries 3. Chọn New 4. Chọn Query Wizard 5. Chọn kiểu Query Wizard cần tạo, có các kiểu là Cross-Tab, Graph và Query. Ví dụ 1: Tạo một Cross Tab Query Giả sử cần xác định xem số lượng thí sinh thi trượt lần 1 các môn học theo lớp có số lượng là như thế nào? Số liệu cần đưa ra dạng sau: Lớp /môn MH1 MH2 MHn 3A-04 4 7 3B-04 3 5 Khi đó cần sử dụng một Cross-Tab. 1. Chọn Cross-Tab Wizard, chọn OK.
  56. Simpo PDF2. MergeStep 1 and- Select Split Fields: Unregistered Chọn Database, Version Tables - và Fields (Sử dụng lệnh >, >> để chọn các trường cần thiết). Khi đã chọn xong các trường, chọn Next để qua bước 3. 3. Step 2 - Define Layout: Bước này cần định nghĩa 3 đối tượng cho Cross-Tab đó là: Row (trong ví dụ này là Malop), Column (Mamon) và Data (Diem1) bàng cách nhấp-thả (Drag) các trường vào các ô (Row, Column, Data) tương ứng. Chọn Next để tiếp tục
  57. Simpo PDF4. MergeStep 3 and- Add Split summary Unregistered Information: Version Chọn -các hàm thống kê đối với đối tượng Data, các hàm này có thể là: Sum, Countm Average, Max, Min, trong ví dụ này thì Summary chọn là Count. Tuỳ chọn Subtotal cho phép thêm vào cột cuối để tính subtotal cho mỗi dòng. Tiếp đến chọn Finish và nhập vào tên file Query để hoàn tất công việc (hoặc chọn Next sẽ chuyển đến bước 4 Step 4 - Finish). Trong cửa sổ Project Manager chọn Query vừa tạo rồi chọn lệnh Run - > Được kết quả thể hiển của Query. Ví dụ 2: Tạo một Graph Form bằng Graph Wizard Giả sử cần thể hiện số lượng sản phẩm của các mặt hàng hiện có trong kho dạng biểu đồ. Khi đó sử dụng Graph Wizard như sau: 1. Chọn Graph Wizard, chọn OK. 2. Step 1 - Select Fields: Như ví dụ trên
  58. Simpo PDF3. MergeStep 2 and- Define Split Layout: Unregistered Version - Bước này cần định nghĩa 2 đối tượng cho là: Data series - Trường số (trong ví dụ này là Soluong) và Axis - Trong ví dụ này là Ma. Chọn Next để tiếp tục (lưu ý là Next và Finish chỉ cho phép khi đã chọn đủ Data series và Axis). 4. Step 3 - Select Graph Style Bước này cho phép chọn kiểu biểu đồ, trong ví dụ này chọn biểu đồ cột (thứ 6). Chọn Next để tiếp tục
  59. Simpo PDF5. MergeStep 4 and- Finish: Split Ch Unregisteredọn Finish rồi nhập Version vào tên - form cần lưu (Kết quả của Wizard này là một Form). Trong cửa sổ Project Manager chọn Form vừa tạo rồi chọn lệnh Run - > Được kết quả thể hiển của Query. Với ví dụ 2 ta có form DMHANG dạng biểu đồ như hình sau: Tạo mới một Query sử dụng Queries Designer
  60. Simpo PDFGi Mergeả sử cần and xem Splitbảng điểmUnregistered một môn họcVersion của một - lớp nào đó, bảng điểm bao gồm Masv, Hoten, Ngaysinh và điểm. Với yêu cầu này có thể sủ dụng Query để lấy thông tin theo các bước sau: 1. Trong Project Manager chọn Tab Data 2. Chọn Queries 3. Chọn New 4. Chọn New Query 5. Chọn Table hoặc View cần dùng cho Query như hình sau. Trong ví dụ này chọn Table Diem (rồi Add) và Hososv (rồi Add) (bước chọn Bảng này có thể thực hiện về sau). Chọn Close để đóng cửa sổ Add Table or View 6. Tiếp đến giao diện Query xuất hiện như hình 6.6 Giao diện Query Designer: o Phía trên: Thể hiện các bảng (hoặc View) sử dụng trong Query. Nháy chuột phải vào phần này ta có Popup menu như sau: Run Query: Thực hiện (chạy) query này View SQL: Xem query ở dạng SQL
  61. Simpo PDF MergeRemove and Table: Split Lo Unregisteredại bỏ bảng đã ch Versionọn khỏi Query- (khi chọn vào bảng) Add Table: Show giao diện Add Table or View Output Setting: Tuỳ chọn đầu ra cho query (xem sau). Hình 6.6 - Query Designer Đường nối thể hiện quan hệ giữa các bảng. o Phía dưới: Các tuỳ chọn cho thiết kế Query Tab Fields: Chọn các trường cho query. Available Fields: Các filed có thể chọn cho query. Selected Fields: Các trường đã chọn. Lệnh Add: Thêm trường đã chọn từ Available Fields vào Selected Fields. Lệnh Add All: Thêm tất cả các trường từ Available Fields vào Selected Fields. Lệnh Remove: Loại bỏ 1 trường đã chọn trong Selected Fields. Lệnh Remove All: Loại bỏ tất cả các trường đã chọn trong Selected Fields. Mục Functions and Expressions: Khai báo 1 biểu thức và có thể thêm (Add) biểu thức này vào Selected fields (và nó có vai trò như 1 trường, dùng khai báo AS để đặt tên cho biểu thức này). Tab Joint: Thiết lập các thuộc tính về kết nối giữa 2 bảng.
  62. Simpo PDFCác b ảngMerge dùng and cho Split1 query Unregistered thường có quan Version hệ nào -đó với nhau. Khi truy xuất dữ liệu, kiểu liên kết (Joint Type) có vai trò quan trọng trong việc ứng xử giữa các bảng. Ví dụ có 2 bảng Dmhang và Hoadon được dùng trong 1 query và có số liệu như hình sau: Bảng Dmhang có chứa các bản ghi H4, H5, các bản ghi này không có trong Hoađon, và ngược lại trong Hoadon có mặt hàng H10 là loại hàng chưa có trong Dmhang. Như vậy khi ghép 2 bảng này mặt hang H4, H5 có số hóa đơn là bao nhiêu? Hóa đơn 7 mặt hàng H10 thì tên hàng là gì, đơn giá là bao nhiêu? Để giái quyết vấn đề này chúng ta sẽ xét các Joint sau đây. Left Table: Bảng phía trái (bảng cha) Right Table: Bảng phía phải (bảng con) Joint Type: Có thể 1 trong các loại sau: o Inner joint: Chỉ trả về các bản ghi có thể so khớp được với nhau trên 2 bảng (khi đó các bản ghi H4, H5 và H7 trong cả 2 bảng sẽ không được trả về) o Left Outer Joint: o Right Outer joint: o Full Joint:
  63. Simpo PDF Merge and Split Unregistered Version - Bài tập 1. Tạo chỉ mục cho các bảng như đã chỉ ra trong bài 1.
  64. Simpo PDF Merge and Split UnregisteredBài 7 - lập trVersionình trong - Visual Foxpro I. Tạo và chạy một chương trình . Visual Foxpro làm việc ở hai chế độ: o Cửa sổ lệnh - Các lệnh được đưa vào cửa sổ lệnh và thực thi. o Chương trình - Tập các lệnh được thực hiện theo một thứ tự nào đó. . Chương trình trong Visual Foxpro được lưu trong các file có phần mở rộng là PRG. Tạo một chương trình Lệnh (từ cửa sổ lệnh) MODIFY COMMAND  Trong đó: là tên chương trình Khi đó xuất hiện cửa sổ soạn thảo cho phép soạn thảo văn bản chương trình. Kết thúc soạn: Nhấn Ctrl+W để ghi lại. Sửa chương trình: cũng dùng lệnh MODI COMM Một chương trình đơn giản Chương trình trong Visual Foxpro không qui định theo một cấu trúc nhất định. Xét một ví dụ đơn giản sau đây: * Phần 1 : Bắt đầu * Dùng các lệnh SET để thiết lập môi trường làm việc SET CENTURY ON && Hiển thị năm dạng yyyy SET DATE FREN && Hiển thị ngày tháng dạng dd/mm/yyyy SET EXCLUSIVE ON && Đặt chế độ mở bảng dạng dùng riêng * Phần 2: Chuẩn bị dữ liệu * Mở các bản cần thiết, đặt quan hệ CLOSE ALL SELECT 0 USE Hososv ALIAS SINHVIEN SET ORDER TO MASV SELECT 0 USE diem SET RELATION TO masv INTO SINHVIEN * Phần 3: Chương trình chính * Xử lý các yêu cầu đặt ra BROWSE FIELDS masv,SINHVIEN.HOTEN,MAMON,DIEM1 ; FOR malop="3H-04" AND mamon="GT101" ; TITLE "Bảng điểm môn GT101 - Lớp 3H-04" ; NOEDIT
  65. Simpo PDF Merge and Split Unregistered Version - * Phần 4: Kết thúc * Đóng các bảng đả mở, thiết lập lại chế độ làm việc USE IN SINHVIEN USE IN DIEM RETURN Như trên ta thấy chương trình được tổ chức thành 4 phần: Phần 1: Bắt đầu - chuẩn bị môi trường (sử dụng các lệnh SET) Phần 2: Chuẩn bị dự liệu (mở các bảng, đặt quan hệ ) Phần 3: Thân chương trình (xử lý các yêu cầu đặt ra) Phần 4: Kết thúc (Đóng các bảng đã mở, trả lại trạng thái ) Chạy (thực thi) một chương trình Lệnh (thực hiện từ cửa sổ lệnh) DO  II. lệnh có cấu trúc 1. Lệnh IF ENDIF Thực hiện có điều kiện một tập các lệnh dựa vào giá trị của biểu thức logic Cú pháp: IF [THEN] Lệnh1 [ELSE Lệnh2] ENDIF Trong đó: . BieuThucLG - Biểu thức logic . BieuThucLG = TRUE Thì các Lệnh1 được thực hiện . BieuThucLG = FALSE và sử dụng mệnh đề ELSE khi đó các Lệnh2 được thực hiện. Ví dụ 1: Kiểm tra xem có ai sinh nhật vào hôm nay hay không? Nếu có thì hiển thị họ tên người đó. SET CENTURY ON SET DATE FREN SET EXCLUSIVE ON CLOSE ALL
  66. Simpo PDFSELECT Merge 0 and Split Unregistered Version - USE HOSOSV ALIAS HSSV LOCA FOR DAY(DATE())=DAY(Ngaysinh) and MONT(DATE())=MONT(Ngaysinh) IF Found() THEN WAIT WIND “Hom nay:”+DTOC(Date()) “la sinh nhat cua:”+HSSV.hoten ELSE WAIT WIND “Khong co ai sinh nhat vao hom nay:”+DTOC(Date()) ENDIF USE IN HOSOSV RETURN Chú ý: Có thể sử dụng cấu trúc IF ENDIF lồng nhau. IF BT1 THEN && IF thứ 1 IF BT2 THEN && IF thứ 2 ELSE ENDIF && Kết thúc IF thứ 2 ELSE ENDIF && Kết thúc IF thứ nhất. 2. Lệnh DO CASE ENDCASE Kiểm tra nhiều điều kiện logic, và thực hiện tập lệnh đầu tiên mà biểu thức logic có giá trị TRUE. Cú pháp: DO CASE CASE BieuThucLogic1 Lệnh 1 CASE BieuThucLogic2 Lệnh 2 CASE BieuThucLogicN Lệnh N [ OTHERWISE Lệnh N+1 ] ENDCASE Trong đó: . BieuThucLogicK - Biểu thức logic
  67. Simpo PDF Merge. Th ựcand hiện Split lệnh: Unregistered Kiểm tra từ BieuThucLogic1Version - đến N nếu tồn tại một BieuThucLogicK =TRUE thì chương trình sẽ thực hiện các câu Lệnh K và kết thúc, trường hợp tất cả các BieuThucLogic=FALSE và sử dụng mệnh đề OTHERWISE thì các Lệnh N+1 được thực hiện. Ví dụ 2: Tính điểm trung bình chung và tính xếp loại của một sinh viên nào đó. SET TALK OFF CLOSE ALL SELECT 0 USE monhoc SET ORDER TO Ma SELECT 0 USE diem SET RELATION TO mamon INTO Monhoc SUM monhoc.sodvht*diem.diem1,monhoc.sodvht TO tongdiem,tongdvht FOR masv="SV-0624 " DTBC=tongdiem/tongdvht DO CASE CASE dtbc>9 WAIT WINDOW "Xep loai: Xuat sac" CASE dtbc>8 WAIT WINDOW "Xep loai: Gioi" CASE dtbc>7 WAIT WINDOW "Xep loai: Kha" CASE dtbc>6 WAIT WINDOW "Xep loai: Trung Binh Kha" CASE dtbc>5 WAIT WINDOW "Xep loai: Trung Binh" OTHERWISE WAIT WINDOW "Xep loai: Yeu" ENDCASE USE IN monhoc USE IN diem RETURN 3. Lệnh DO WHILE ENDDO Thực hiện một tập các lệnh trong vòng lặp có điều kiện. Cú pháp: DO WHILE Lệnh 1 [LOOP] [EXIT] Lệnh 2 ENDDO Trong đó:
  68. Simpo PDF Merge. BieuThucLogic and Split Unregistered - Biểu thức logic Version - . Thực hiện: Nếu BieuThucLogic=TRUE sẽ thực các Lệnh 1, Lệnh 2, khi đến ENDDO sẽ quay trở lại kiểm tra BieuThucLogic; trường hợp BieuThucLogic=FALSE sẽ kết thúc lệnh. Lệnh LOOP cho phép (ngay lập tức) trở lại bắt đầu vòng lặp (Kiểm tra BieuThucLogic), bỏ qua các lệnh giữa LOOP và ENDDO. Lệnh LOOP có thể đặt vào bất cứ đâu giữa DO WHILE và ENDDO. Lệnh EXIT cho phép (ngay lập tức) kết thúc lệnh DO WHILE ENDDO và bỏ qua các lệnh giữa EXIT và ENDDO. Lệnh EXIT có thể đặt vào bất cứ đâu giữa DO WHILE và ENDDO. Ví dụ 3: Tìm xem trong danh sách sinh viên có bạn Nữ (Gioi=.T.) nào có điểm trung binhg chung đạt >=8.0? SET TALK OFF CLEAR CLEAR ALL CLOSE ALL SELECT 0 USE monhoc SET ORDER TO MONLOP && MA+MALOP SELECT 0 USE diem SET RELATION TO mamon+malop INTO Monhoc SELECT 0 USE Hososv GO TOP DO WHILE !EOF() IF hososv.gioi=.F. Then SKIP LOOP ENDIF SELECT diem SUM monhoc.sodvht*diem.diem1,monhoc.sodvht ; TO tdiem,tdvht FOR masv=Hososv.masv dtbc=tongdiem/tongdvht IF dtbc>=8 THEN WAIT WINDOW "SV: "+ hososv.hoten +" DTBC: "+ STR(dtbc) EXIT ENDIF SELECT hososv SKIP ENDDO USE IN hososv USE IN monhoc USE IN diem RETURN
  69. Simpo PDF4. Lệnh Merge FOR and ENDFOR Split Unregistered Version - Thực hiện một tập các lệnh với số lần lặp xác định. Cú pháp: FOR Bien = initValue TO FinalValue [STEP K] Lệnh 1 [LOOP] [EXIT] Lệnh 2 ENDFOR Trong đó: . Bien - Đóng vai trò như một biến đếm, initValue - Giá trị đầu, FinalValue - Giá trị cuối. . Thực hiện: Thực hiện các lệnh giữa FOR và ENDFOR khi biến Bien có giá trị từ initValue đến FinalValue. Tham số STEP K qui định bước thay đổi của biến Bien bằng K (K có thể âm), mặc định (khi không thên tùy chọn STEP K) K =1. Lệnh LOOP cho phép (ngay lập tức) trở lại bắt đầu vòng FOR, bỏ qua các lệnh giữa LOOP và ENDFOR. Lệnh LOOP có thể đặt vào bất cứ đâu giữa FOR và ENDFOR. Lệnh EXIT cho phép (ngay lập tức) kết thúc lệnh FOR ENDFOR và bỏ qua các lệnh giữa EXIT và ENDFOR. Lệnh EXIT có thể đặt vào bất cứ đâu giữa FOR và ENDFOR. Ví dụ 4: Tính điểm trung bình chung học kỳ 1 năm 2004-2005 của lớp 3E-04. SET TALK OFF SET SAFETY OFF CLEAR CLEAR ALL CLOSE ALL SELECT 0 USE monhoc SET ORDER TO MONLOP && MA+MALOP SELECT 0 USE diem SET RELATION TO mamon+malop INTO Monhoc SET FILTER TO monhoc.hocky=1 AND monhoc.namhoc=2004 SELECT 0 USE Hososv COPY TO c:\temp\HOSOLOP FOR malop="3E-04" USE IN hososv SELECT 0 USE c:\temp\HOSOLOP ALIAS Hososv EXCLUSIVE
  70. Simpo PDFALTER Merge table c:and\temp Split\HOSOLOP Unregistered ADD COLUMN Version - Dtb N(5,2) n=RECCOUNT() FOR i=1 TO n SELECT diem SUM monhoc.sodvht*diem.diem1,monhoc.sodvht ; TO tongdiem,tongdvht FOR masv=Hososv.masv SELECT hososv REPLACE dtbc WITH IIF(tongdvht>0,tongdiem/tongdvht,0) SKIP ENDFOR SELECT Hososv BROWSE FIELDS masv,hoten,ngaysinh,dtbc ; TITLE "Tong ket ket qua hoc ky 1, 2004-2005" USE IN hososv USE IN monhoc USE IN diem RETURN 5. Lệnh SCAN ENDSCAN Di chuyển con trỏ bản ghi trên một vùng làm việc nào đó, tương ứng với mỗi bản ghi tìm thấy sẽ thực hiện một tập các lệnh. Cú pháp: SCAN [Scope] [FOR BieuthucLogic] Lệnh 1 [LOOP] [EXIT] Lệnh 2 ENDSCAN Trong đó: . Tùy chọn Scope cho phép xác định phạm vi tác động của lệnh (ALL, NEXT n, RECORD n, REST). . Tùy chọn [FOR BieuThucLogic] cho phép lệnh SCAN duyệt trên các bản ghi thỏa mãn BieuThucLogic. Nếu không đưa tham số này vào thì lệnh SCAN sẽ duyệt trên tất cả các bản ghi. . Thực hiện: (*) Nếu còn bản ghi (trong phạm vi Scope và thỏa mãn BieuThucLogic) trong vùng làm việc -> Thực hiện các lệnh giữa SCAN và ENDSCAN, tiếp đến dịch chuyển con trỏ bản ghi đi 1 vị trí (SKIP 1) rồi trở lại (*); Nếu không còn bản ghi nào-> Kết thúc lệnh SCAN.
  71. Simpo PDF MergeLệnh and LOOP Split cho Unregistered phép (ngay lậpVersion tức) trở - bắt đầu vòng SCAN bỏ qua các lệnh giữa LOOP và ENDSCAN. Lệnh LOOP có thể đặt vào bất cứ đâu giữa SCAN và ENDSCAN. Lệnh EXIT cho phép (ngay lập tức) kết thúc lệnh SCAN ENDSCAN và bỏ qua các lệnh giữa EXIT và ENDSCAN. Lệnh EXIT có thể đặt vào bất cứ đâu giữa SCAN và ENDSCAN. Ví dụ 5: Tính điểm trung bình chung học kỳ 1 năm 2004-2005 của lớp 3E-04 (như ví dụ 4 nhưng thay FOR bằng SCAN). SET SAFETY OFF SET TALK OFF CLEAR CLEAR ALL CLOSE ALL SELECT 0 USE monhoc SET ORDER TO MONLOP && MA+MALOP SELECT 0 USE diem SET RELATION TO mamon+malop INTO Monhoc SET FILTER TO monhoc.hocky=1 AND monhoc.namhoc=2004 SELECT 0 USE Hososv COPY TO c:\temp\HOSOLOP FOR malop="3E-04" USE IN hososv SELECT 0 USE c:\temp\HOSOLOP ALIAS Hososv EXCLUSIVE ALTER table c:\temp\HOSOLOP ADD COLUMN Dtbc N(5,2) GO TOP SCAN SELECT diem SUM monhoc.sodvht*diem.diem1,monhoc.sodvht ; TO tongdiem,tongdvht FOR masv=Hososv.masv SELECT hososv REPLACE dtbc WITH IIF(tongdvht>0,tongdiem/tongdvht,0) ENDSCAN SELECT Hososv BROWSE FIELDS masv,hoten,ngaysinh,dtbc ; TITLE "Tong ket ket qua hoc ky 1, 2004-2005" USE IN hososv USE IN monhoc USE IN diem RETURN III. Chương trình con 1. Thủ tục (PROCEDURE) Người sử dụng có thể tạo ra các thủ tục riêng bằng cách sử dụng khai báo PROCEDURE
  72. Simpo PDFCú Merge pháp: and Split Unregistered Version - PROCEDURE [PARAMETERS ] Lệnh [ENDPROC] Trong đó: . ProcName: Tên thủ tục (do người sử dụng tự đặt) . Tùy chọn PARAMETERS cho phép khai báo các tham số “hình thức”, các tham số này sẽ nhận giá trị thực từ chương trình chính khi thực hiện lời gọi thủ tục, para1, para2 , , paraN là tên các tham số hình thức. Lời gọi thủ tục: Các thủ tục sau khi hoàn tất có thể được gọi từ một chương trình nào đó. Lời gọi chương trình con có dạng như sau. DO [With value1, value2 valueN] [IN ProgName] Trong đó: ProcName là tên thủ tục cần gọi; value1, value valueN là giá trị thực được truyền tương ứng cho các tham số hình thức của chương trình con; tùy chọn IN ProgName cho phép xác định file chương trình chứa thủ tục cần gọi (mặc định là trong bản thân chương trình đang thực hiện). Ví dụ 6: Viết thủ tục cho phép hiển thị thứ (trong tuần) của một ngày nào đó. CLEAR ALL CLOSE ALL CLEAR DO HienThiThu WITH DATE() * Khai bao thu tuc PROCEDURE HienThiThu PARAMETERS date1 WAIT WINDOW CDOW(Date1) ENDPROC Trong ví dụ trên, date1 là tham số “hình thức” trong thủ tục HienThiNgay và nhận tham số thực là Date() trong lời gọi thủ tục trong chương trình chính. Giả sử ví dụ 6 được lưu vào file Vidu6.PRG, khi đó trong một chương trình khác có thể thực hiện lời gọi thủ tục HienThiThu như sau: DO HienThiThu WITH DATE() IN Vidu6.PRG Chú ý: Với các tham số hình thức Para1, para2 có thể không truyền giá trị cho các tham số này khi thực hiện lời gọi thủ tục, tuy nhiên các tham số khi đó sẽ nhận giá trị FALSE (giá trị Logic) và như vậy rất có thể dẫn đến lỗi. 2. Hàm (FUNCTION)
  73. Simpo PDFNgoài Merge các andhàm Splitdo Visual Unregistered Foxpro cung Version cấp sẵn, - sử dụng có thể tạo ra các thủ tục riêng bằng cách sử dụng khai báo FUNCTION Cú pháp: FUNCTION [PARAMETERS ] Lệnh RETURN [ENDFUNC] Trong đó: . FuncName: Tên hàm (do người sử dụng tự đặt) . Tùy chọn PARAMETERS cho phép khai báo các tham số “hình thức”, các tham số này sẽ nhận giá trị thực từ chương trình chính khi thực hiện lời gọi hàm para1, para2 , , paraN là tên các tham số hình thức. . BieuThuc: Giá trị của biểu thức này là giá trị trả về của hàm. Lời gọi hàm: Các hàm tự tạo hoặc hàm do Visual Foxpro cung cấp đều được gọi như sau: FuncName(With value1, value2 valueN) Trong đó: FuncName là tên hàm cần gọi; value1, value valueN là giá trị thực được truyền tương ứng cho các tham số hình thức của chương trình con. Lời gọi hàm chỉ tham gia vào trong các biểu thức. Ví dụ 7: Viết hàm tính tổng của 2 số. CLEAR ALL CLOSE ALL CLEAR a=10 b=20 WAIT WINDOW STR(a)+"+"+STR(b)+"="+STR(tong(a,b)) * Khai bao ham FUNCTION Tong PARAMETERS x,y RETURN x+y ENDPROC Ví dụ 8: Viết hàm trả về thứ (tiếng việt) của một ngày nào đó. CLEAR ALL CLOSE ALL CLEAR WAIT WINDOW “Hom nay la: ”+ ThuVN(DATE()) * Khai bao thu tuc FUNCTION ThuVN
  74. Simpo PDF MergePARAMETERS and Split dUnregistered Version - kq="" i=DOW(d) DO CASE CASE i=1 kq="Chu Nhat" CASE i=2 kq="Thu Hai" CASE i=3 kq="Thu Ba" CASE i=4 kq="Thu Tu" CASE i=5 kq="Thu Nam" CASE i=6 kq="Thu Sau" CASE i=7 kq="Thu Bay" ENDCASE RETURN kq ENDPROC Bài tập 1. Thực hiện các ví dụ trong bài. 2. Hoàn thành hàm TENVN đẽ nêu trong bài 3.
  75. Simpo PDF Merge and Split UnregisteredBài 08 Version - thi ết- kế form I. Lập trình trên windows . Lập trình trên Windows có nhiều khác biệt so với lập trình trên DOS (như lập trình bằng PASCAL), các điểm khác biệt chính là: Sử dụng nhiều đối tượng trực quan trong thiết kế giao diện; Logic chương trình diễn ra theo sự kiện . Đối tượng (điều khiển - Control): Các công cụ lập trình trên Windows thường cung cấp sẵn các đối tượng điều kiển như: Cửa sổ (FORM), Nút lệnh (Command Button), Ô text (Textbox), Lưới (GRID) và nhiều đối tượng điều khiển khác thường dùng cho việc thiết kế giao diện. . Thuộc tính (Properties): Mỗi đối tượng điều khiển được mô tả qua một số thuộc tính nào đó, các thuộc tính này qui định tính chất hiển thị, định danh của đối tượng như: Name - Tên đối tượng, Font - Font chữ, Width - độ rộng, Height - chiều cao Các thuộc tính của đối tượng do người lập trình xác lập. . Sự kiện (Events): Mỗi đối tượng điều khiển có khả năng đáp ứng một số sự kiện nào đó. Ví dụ: đối tượng Command Button có khả năng đáp ứng sự kiện Click, Double Click đối tượng Text box có khả năng đáp ứng sự kiện Click, Change Các sự kiện này do người sử dụng tạo ra. Các sự kiện do người lập trình viết mã nhằm thực thi một công việc nào đó. . Phương thức (Methods): Mỗi đối tượng điều khiển thường có một vài phương thức tương ứng với một “hành động” nào đó. Ví
  76. Simpo PDF Mergedụ với and FORM Split Unregistered có thể sử Version dụng - phương thức Cls để xoá Form, phương thúc Line để vẽ một đoạn thẳng; với đối tượng TextBox sử dụng phương thức Refresh để làm tươi dữ liệu, phương thức Move để di chuyển vị trí Các phương thức được thiết lập sẵn nhằm thực thi một công việc cụ thể. II. thiết kế form 1. Tạo mới một FORM sử dụng Wizard Các bước thực hiện 1. Mở Project cần làm, trong Project Manager chọn Tab Documents 2. Chọn Form 3. Chọn New 4. Chọn Form Wizard, khi đó giao diện chọn kiểu Form Wizard xuất hiện như hình sau:
  77. Simpo PDF5. Merge Chọn and kiểu Split Form Unregistered Wizard: Version Form - - Tạo Form từ một bảng đơn, hoặc One-To-Many Form Wizard - Tạo Form từ 2 bảng có quan hệ (1-nhiều) với nhau. Ví dụ 1: Tạo Form từ bảng đơn - Form cập nhật danh mục khoá (DMKHOA) 1. Bước 0 - Bước 5 ở trên chọn Form Wizard, chọn OK 2. Step 1 - Select Fields: Chọn Database, Tables và Fields (Sử dụng lệnh >, >> để chọn các trường cần thiết), Trong ví dụ này chọn bảng DMKHOA, chọn tất cả các trường. Khi đã chọn xong các trường, chọn Next để qua bước 2. 3. Step 2 - Choose Form Style: Chọn kiểu form, kiểu nút lệnh
  78. Simpo PDF Merge and Split Unregistered Version - Style: Kiểu Form. Khi chọn một kiểu nào đó, phần ảnh bên trái hiển thị dạng form tương ứng với kiểu đó. Button type: Kiểu nút lệnh. Text - Nút lệnh dạng chữ (Text), Picture - Nút lệnh dạng ảnh, No button - Không có button. Custom - Tuỳ chọn. Nên chọn là Text hoặc Picture. Chọn Next để tiếp tục 4. Step 3 - Sort Records
  79. Simpo PDF Merge and Split Unregistered Version - Chọn trường để sắp xếp: Chọn1 trong các trường để sắp xếp hoặc có thể bỏ qua. 5. Step 4 - Finish Nhập vào tiêu đề cho form rồi chọn Finish. Tiếp đến nhập vào tên form rồi chọn Save để ghi lại.
  80. Simpo PDFVí d Mergeụ 2: Tạoand Split Form Unregistered từ 2 bảng Version - -Form cập nhật danh mục Lớp (DMLOP) 1. Bước 0 - Bước 5 ở trên chọn One-To-Many Form Wizard, chọn OK 2. Step 1 - Select Parent Table Fields: Chọn trường cho bảng cha, rồi chọn Next. (Trong ví dụ này chúng ta dùng 2 bảng là DMKHOA - bảng cha, và DMLOP - bảng con). 3. Step 2 - Select Child Table Fields: Chọn trường cho bảng con, chọn Next để tiếp tục.
  81. Simpo PDF Merge and Split Unregistered Version - 4. Step 3 - Relate Tables: Xác định quan hệ giữa 2 bảng, trường hợp đã thiết lập quan hệ bền vững giữa các bảng thì quan hệ này sẽ được xác lập ngay (như hình vẽ). Chọn Next để tiếp tục. 5. Step 4 - Choose Form Style : Chọn kiểu Form, Chọn Next để tiếp tục (xem phần trước).
  82. Simpo PDF6. Merge Step and5 - SplitSort Unregistered Records: VersionChọn tr- ư để sắp xếp. Chọn Next để tiếp tục (xem phần trước). 7. Step 6 - Finish: Kết thúc (xem phần trước). 2. Tạo mới một FORM sử dụng Form Designer Các bước thực hiện 1. Mở Project cần làm, trong Project Manager chọn Tab Documents. 2. Chọn Form 3. Chọn New 4. Chọn New Form. Khi đó giao diện Form Designer xuất hiện như hình sau:
  83. Simpo PDF MergeTrong and đó: Split Phía Unregistered trên là thanh Version toolbar - Form Designer, bên phải là thanh toolbar Form Controls. Chúng ta sẽ tìm hiểu các chức năng này trong các phần sau. Một số thuộc tính của FORM Form là đối tượng quan trọng trong thiết kế giao diện trên WIndows, cũng như các đối tượng khác Form có các thuộc tính riêng của nó. Có hai cách để thiết lập các thuộc tính của form: 1. là sử dụng cửa sổ Properties và 2. là sử dụng lệnh để thiết lập (có những thuộc tính chỉ cho phép thiết lập ở chế độ thứ 2). Hiển thị cửa sổ Properties: Kích phải chuột vào phần nền của Form đang thiết kế, khi đó một Pop-up menu xuất hiện và ta chọn chức năng Properties. Pop-up menu và cửa sổ Properties xuất hiện như hình sau:
  84. Simpo PDF Merge and Split Unregistered Version - Sau đây chúng ta tìm hiểu một số thuộc tính thông dụng của Form. 1. AlwaysOnTop: Ngăn cản các cửa sổ khác đè lên. Thuộc tính này có thể nhận 1 trong hai giá trị là: (1) .T. - Form luôn nằm trên đối tượng khác; (2) .F. - Cửa sổ khác có thể đè lên (mặc định). 2. AutoCenter: Chỉ ra khi xuất hiện vị trí của Form có ở giữa màn hình hay không. Thuộc tính này có thể nhận 1 trong 2 giá trị: (1) .T. - Form tự động được canh giữa; (2) .F. - Vị trí của Form phụ thuộc vào thuộc tính Top, Left (mặc định).
  85. Simpo PDF3. Merge BackColo and Splitr: MUnregisteredầu nền của Version Form. - Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định mầu. 4. BorderStyle: Dạng đường viền của Form. Thuộc tính này có thể nhận một trong các giá trị: (1) 0 - Không có đường viền (No Border); (2) 1 - Dạng đơn, cố định (Fixed Single); (3) 2 - Theo dạng cửa sổ hộp thoại (Fixed Dialog); (4) 3 - Có thể thay đổi kích thước (Sizable - Mặc định). 5. Caption: Tiêu đề của Form. Thuộc tính này nhận giá trị là một xâu kí tự, mặc định caption là tên form. 6. Closable: Cho phép sử dụng lệnh Close trong hộp Control - menu hoặc nút Close góc trên bên phải form. Thuộc tính này có thể nhận các giá trị: (1) .T. - Cho phép đóng cửa sổ bằng lệnh Close (Mặc định); (2) .F. - Không cho phép sử dụng lệnh Close. 7. ControlBox: Hiển thị hoặc không hộp Control menu box góc trên bên trái form. Thuộc tính này nhận các giá trị: (1) .T. - Hiển thị contrrol menu box; (2) - Không hiển thị control menu box. 8. Enabled: Cho phép có hiệu lực hay vô hiệu khả năng đáp ứng sự kiện của các control trên form (và cả form). Thuộc tính này nhận các giá trị: (1) .T. - có hiệu lực; (2) .F. - Vô hiệu lực. 9. FontName: Xác định font chữ dùng để hiển thị các đối tượng text trên form. Khi thiết kế có thể dùng hộp thoại chọn forn để chọn các font chữ hiện có trong máy tính. Trong chương trình
  86. Simpo PDF Mergethuộc and tính Split này Unregistered nhận xâu Version text thể - hiện tên của font chữ nào đó, ví dụ “.vnTime”, “.vnArial”. 10. FontSize: Kích thước font chữ. 11. Height: Chiều cao form. 12. Left: Vị trí cạnh trái của form 13. Maxbutton, MinButton: Hiển thị hay không các nút lệnh Maximize, Minimize. Thuộc tính này nhận các giá trị: (1) .T. - Hiển thị (mặc định); (2) .F. Không hiển thị. 14. Name: Tên (định danh) Form, Tên form là xâu kí tự không chứa dấu cách, và ký tự đặc biệt. 15. Top: Vị trí cạnh trên của Form. 16. Width: Độ rộng của form. 17. WindowState: Xác định trạng thái form khi chạy. Thuộc tính này có thể nhận các giá trị: (1) 0 - Bình thường (Normal), tức là vị trí, kích thước của form như thiết kế (mặc định); (2) 1 - Thu thành biểu tượng trên task bar (Minimize); (3) 2 - Phóng to hết cỡ màn hình (Maximize). Một số tình huống (Event) thường dùng của Form 1. Activate: Tình huống này sảy ra khi form được “kích hoạt” (active). Ví dụ: Khi kích hoạt form DMKHOA (đã tạo bằng Form Wizard trước đó) cần đưa về bản ghi (khoá) cuối cùng. Cách thực hiện:
  87. Simpo PDF Merge. andTrong Split c Unregisteredửa sổ Project Version Manager - chọn mục Documents. . Chọn mục Form và mở rộng. . Chọn form DMKHOA . Chọn Modify, khi đó giao diện Form Designer xuất hiện Trong Form Designer nháy đúp chuột trái vào nền Form, khi đó giao diện lập trình trong form xuất hiện như hình sau: . Object: hiển thị tên đối tượng (trong tình huống này là Form1 - Tên của form DMHANG). Kích chuột trái vào mũi tên xuống (bên cạnh) để chọn Object nếu cần. . Procedure: Hiện thị tình huống (event) có thể đáp ứng của đối tượng (Objêct) đã chọn ở ô bên cạnh. Kích chuột trái
  88. Simpo PDF Merge andvào Split mũi Unregistered tên xuống Version (bên c -ạnh) để chọn tình huống nếu cần, trong ví dụ này tình huống cần chọn là Activate. . Viết lệnh: Khi đã chọn đúng đối tượng và tình huống cần thiết thì cửa sổ bên dưới cho phép soạn thảo lệnh nhằm đáp ứng tình huống đặt ra. Trong ví dụ này chúng ta cần đưa về bản ghi cuối nên nhập vào lệnh: thisform.butTONSET1.cmdEnd.click Trong đó: Thisform: là tên thay thế của form hiện thời butTONSET1: Tên lớp chứa các nút lệnh cmdEnd: Tên nút lệnh Buttom Click: Tình huống click của đối tượng cmdEnd 2. Click: Tình huống này sảy ra khi người sử dụng click phím trái chuột trên form. Ví dụ khi click chuột trái lên form DMKHOA -> Hiển thị thông báo “Ban vua click chuot trai len form!”. Thực hiện tương tự như trên nhưng chọn Event là click và viết lệnh: MESSAGEBOX("Ban vua click chuot trai tren form!") 3. Dbclick: Tình huống này sảy ra khi người sử dụng nháy đúp chuột trái trên form.
  89. Simpo PDF MergeVí d ụand khi Split Dbclick Unregistered chuột Version trái - l ên form DMKHOA -> Hiển thị thông báo “Ban vua Double click chuot trai len form!”. Thực hiện tương tự như trên nhưng chọn Event là Dbclick và viết lệnh: MESSAGEBOX("Ban vua Double click chuot trai tren form!") 4. Deactivate: Tình huống này sảy ra khi form bị thôi kích hoạt (ngược với kích hoạt). Ví dụ hiển thị một thông báo khi thôi kích hoạt 1 form. 5. Destroy: Tình huống này sảy ra khi form được hủy bỏ (destroy). Ví dụ: Hiển thị thông báo “Destroy” khi tình huống này xảy ra. Thực hiện tương tự như trên nhưng chọn Event là Destroy và viết lệnh: MESSAGEBOX("Destroy!") 6. Init: Tình huống này sảy ra khi form được khởi tạo. Ví dụ: Hiển thị thông báo “Init” khi tình huống này xảy ra. Thực hiện tương tự như trên nhưng chọn Event là Init và viết lệnh: MESSAGEBOX("Init!") 7. Load: Tình huống này sảy ra trước khi form được khởi tạo. Ví dụ: Hiển thị thông báo “Load” khi tình huống này xảy ra.
  90. Simpo PDF MergeThực and hiện Split t ươngUnregistered tự nh ưVersion trên -nhưng chọn Event là Destroy và viết lệnh: MESSAGEBOX("Load!") Một số phương thức (Methods) thường dùng của Form 1. Circle(r, x,y): Cho phép vẽ lên form 1 vòng tròn bán kính r, tâm tại x,y. 2. Cls: Xóa sạch nền form. 3. Hide: ẩn form 4. Line(x1,y1,x2,y2): Vẽ đoạn thẳng từ x1,y1 đến x2,y2 5. Point(x,y): Trả về số hiệu mầu tại điểm x,y 6. Print(cText): In một dòng text ra màn hình 7. Pset(x,y): Vẽ điểm x,y 8. Release: Xóa form hiện thời. 9. Show: Hiển thị form. 3. Thi hành (chạy) một FORM Thực thi một Form bằng 1 trong hai cách: Cách 1: Từ cửa sổ Project Manager, chọn Documents, chọn Form rồi chọn Form cần thi hành rồi nhấn Run. Cách 2: Thực hiện qua lệnh Do FORM như sau: DO FORM
  91. Simpo PDFIII. CácMerge thành and Split ph Unregisteredần liên quan Version đến - công cụ form designer 1. Thanh công cụ Color Palette (Tự tìm hiểu) 2. Thanh công cụ Layout (Tự tìm hiểu) 3. Thanh công cụ Toolbar (Tự tìm hiểu) 4. Data Environment Data Environment là đối tượng dùng để chứa các bảng dữ liệu hay View mà form cần sử dụng. Data Environment tự động mở các bảng và view khi Form được khởi động và cũng tự đóng chúng khi kết thúc làm việc với form. Sử dụng Data Environment giúp chúng ta dễ dàng thiết kế các giao diện với bảng hoặc view. Thiết lập Data Environment: 1. Mở Form cần làm việc ở chế độ Form Designer 2. Trong Menu View chọn mục Data Environment khi đó giao diện Data Environment xuất hiện như hình sau:
  92. Simpo PDF Merge and Split Unregistered Version - 3. Click chuột phải lên vùng trống trong Data Environment rồi chọn lệnh Add để thêm các bảng, view vào Data Environment. Bài tập Bước đầu thiết kế các form nhập liệu như đã nêu trong bài tập môn học - bài 1.
  93. Simpo PDF Merge and Split UnregisteredBài 09 -Version sử dụng - các control I. giới thiệu Các đối tượng điều khiển (Control) được sử dụng trong việc thiết kế giao diện trên Form, Report, Label (Trong bài này chúng ta chỉ xét đến các Control dùng trên FORM). Ví dụ giao diện sau được thiết kế từ FORM và các control. Hình 1 Mỗi loại đối tượng thường được thiết kế cho một mục đích nhất định. Ví dụ đối tượng Label (nhãn) được dùng để hiển thị một chú thích, đối tượng TextBox được dùng để cho phép nhập liệu, đối tượng Command Button để thể hiện các nút lệnh Tuy nhiên người dùng có thể sử dụng với mục đích khác. Các Control được xác định qua các Properties (thuộc tính), Methods (Phương thức) và Events (sự kiện - tương tự như FORM). Thanh công cụ Form Controls: Khi đang mở Form ở chế độ thiết kế (Form Designer), Visual Foxpro hiển thị thanh công cụ Form Controls như hình sau: Có thể hiển thị/ẩn Form Control bằng cách trong menu View chọn Form Control Toolbar
  94. Simpo PDF MergeĐưa m andột Control Split Unregistered vào Form: Từ Versionthanh công - cụ Form Controls “nhấp” đối tượng cần dùng và “thả” vào Form. Ví dụ II. Các đối tượng thường dùng 1. Label: Sử dụng cho: hiển thị nhãn, chú thích, ví dụ các ô text sau các label Khóa, Lớp, Học kỳ, Năm học trong Hình 1 được dùng để nhập khóa, lớp, học kỳ và năm học. Các Properties thường dùng: 1) Alignment: Canh lề phần text hiển thị của label. Thuộc tính này có thể nhận các giá trị: (1) 0 - Left Canh trái, đây là giá trị mặc định; (2) 1-Right Canh phải; (3) 2 - Center canh giữa. 2) Autosize: Tự động thay đổi kích thước phù hợp cho việc hiển thị thuộc tính Caption của nó. 3) BackColor: Đặt mầu nền của Label. Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định mầu. 4) BackStyle: Thiết lập tính chất nền. Thuộc tính này có thể nhận một trong các giá trị: (1) 0 - Transparent xác định tính chất trong suốt của nền (có thể nhìn thấy mọi đối tượng “phía sau”); (2) 1 - Opaque không cho quan sát các đối tượng phía sau. 5) BorderStyle: Thiết kập thuộc tính biên của đối tượng. Thuộc tính này có thể nhận các giá trị: 0 (none) - Không có đường biên; 1 (Fixed single) - Đường biên đơn. 6) Caption: Text hiển thị như một nhãn, chú thích. Thuộc tính này nhận chuỗi text bất kỳ. 7) FontName: Đặt Font chữ. 8) ForeColor: Đặt mầu chữ. Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định. 9) Height: Chiều cao 10) Left: Vị trí cạnh trái 11) Name: Tên của đối tượng (dùng để sử dụng trong chương trình) 12) Top: Vị trí cạnh trên 13) Visible: Thiết lập tính chất Hiện/ẩn. Thuộc tính này nhận 2 giá trị: (1) .T. - Hiện ; (2) .F. - ẩn.
  95. Simpo PDF Merge14) and Width Split: Độ Unregistered rộng của label. Version - Label cũng có nhiều Methods và Events, tuy nhiên vì mục đích của đối tượng này là hiển thị một đoạn text nên trong phần này không giới thiệu các methods và events này. 2. TextBox, EditBox Sử dụng cho: Nhập một dòng text, các số, ví dụ các nhãn Khóa, Lớp, Học kỳ, Năm học trong Hình 1 được dùng làm tiêu đề cho các ô dữ liệu bên cạnh. Các Properties thường dùng: 1) Alignment: Xem phần II.1 2) BackColor: Xem phần II.1 3) BackStyle: Xem phần II.1 4) BorderColor: Xem phần II.1 5) BorderStyle: Xem phần II.1 6) ControlSource: Cho phép “gắn kết” (bound) textbox với 1 trường hoặc biến nào đó (thông thường với 1 trường). Việc “Gắn kết” ở đây được hiểu là nếu text trên textbox thay đổi thì trường hoặc biến “gắn kết” với nó cũng thay đổi theo. Ví dụ, thêm 1 textbox vào form và đặt thuộc tính controlSource=”Hososv.hoten” ->Run Form. 7) DisabledBackColor: Mầu nền của textbox khi thuộc tính Enable=.F. 8) DisabledForeColor: Mầu của text khi thuộc tính Enable=.F. 9) Enabled: Cho phép có hiệu lực hay vô hiệu khả năng đáp ứng sự kiện của textbox. Thuộc tính này nhận các giá trị: .T. - có hiệu lực; .F. - Vô hiệu lực 10) FontName: Xem phần II.1 11) ForeColor: Xem phần II.1 12) Format: Định dạng dữ liệu hiển thị. Visual Foxpro qui định kí hiệu sử dụng cho Format của textbox (tham khảo trong help của Visual Foxpro 9 (Microsoft Visual Foxpro 9.0/Reference/Language Reference/Properties/ Format Property). Ví dụ đặt Format là !A (! - Hiển thị chữ hoa, A - Chỉ nhập các ký tự) 13) Height: Xem phần II.1 14) InputMask: Định dạng dữ liệu nhập. Visual Foxpro qui định kí hiệu sử dụng cho InputMask của textbox (tham khảo trong help của Visual Foxpro 9 (Microsoft
  96. Simpo PDF Merge andVisual Split Foxpro Unregistered 9.0/Reference/Language Version - Reference/Properties/ InputMask Property). Ví dụ đặt InputMask là ### (# - nhập chữ số) cho phép nhập 3 chữ số. 15) Left: Xem phần II.1 16) MaxLength: Số ký tự tối đa có thể nhập (nếu MaxLength=0 thì số ký tự là bất kỳ, đây là giá trị mặc định). 17) SelectOnEntry: Thiết lập chế độ đánh dấu text khi đối tượng này nhận quyền điều khiển. Thuộc tính này nhận các giá trị: .T. - Cho phép chế độ đánh dấu; .F. Không cho phép. 18) TabIndex: Thứ tự theo Index của đối tượng (khi sử dụng phím Tab con trỏ sẽ di chuyển theo thứ tự Index từ thấp đến cao) 19) Top: Xem phần II.1 20) Value: Giá trị là xâu text hiển thị trên đối tượng này. 21) Visible: Xem phần II.1 22) Width: Xem phần II.1 Các Methods và Event thường dùng: 1) Refresh (method): “Làm tươi” lại dữ liệu hiển thị trên textbox. Ví dụ, đặt thuộc tính ControlSource = text1 (text1 là 1 biến), sau đó gán cho text1 =”Visual Foxpro”, khi đó cần thực hiện Refresh để làm tươi lại dữ liệu trên Text. 2) SetFocus (method): Đưa con trỏ đến đối tượng này. 3) Valid (Event): Sự kiện này sảy ra trước khi chuyển quyền điều khiển tới đối tượng khác. Vì lý do như vậy nên sự kiện này thường dùng để kiểm tra tính hợp lệ của dữ liệu, nếu không hợp lệ thì có thể yêu cầu người sử dụng nhập lại. Ví dụ 1: Trong hình 1, xét ô text học kỳ. Ta có học kỳ chỉ nhận 2 giá trị là 1 hoặc 2, để đảm bảo yêu cầu này chúng ta sẽ viết đoạn lệnh đáp ứng sự kiện valid để kiểm. Giá thiết textbox được thiết lập các thuộc tính Name = hocky Maxlength=1 khi đó sự kiện hocky.valid được viết như sau: hk=this.value IF !hk$"1;2" then WAIT WINDOW "Gia tri khong dung! Hoc ky = 1 hoac 2" NOWAIT RETURN 0 ENDIF
  97. Simpo PDFVí dụ Merge 2: Trong and h ìnSplith 1, Unregistered xét ô text khóa. Version Ta th ấy- các khóa nhập vào ở đây phải nằm trong DMKHOA thì mới có nghĩa -> Viết sự kiện valid để kiểm tra tính hợp lệ này của ô text khóa. Giá thiết textbox được thiết lập các thuộc tính Name = Khoa Maxlength=10 khi đó sự kiện Khoa.valid được viết như sau: khoahoc=this.Value SELECT dmkhoa LOCATE FOR (ma=khoahoc) IF FOUND() THEN thisform.lblTenKhoa.Caption=dmkhoa.ten ELSE IF !EMPTY(khoahoc) THEN WAIT WINDOW "Ma khoa khong dung!!" NOWAIT RETURN 0 ELSE thisform.lblTenKhoa.Caption="" ENDIF ENDIF Đối tượng EditBox tương đối giống TextBox (khác biệt chủ yếu là cho phép soạn text trên nhiều dòng) các bạn tự tìm hiểu thêm. 3. Command Button Sử dụng cho: Tạo các nút lệnh. Ví dụ như các nút lệnh Tạo BC, To Excel, Xem in trong hình 1. Các Properties thường dùng: Trong phần này chỉ giới thiệu một số thuộc tính khác so với các thuộc tính đã giới thiệu ở các đối tượng trên. 1) Caption: Text hiển thị như tên (khác với name) của nút lệnh. 2) FontName: Font chữ cho caption. 3) Picture: Cho phép đưa một ảnh vào nút lệnh. 4) ToolTipText: Đặt dòng text (tooltip) khi đưa con trỏ tới nút lệnh. Các Methods và Events thường dùng: 1) Click (Event): Sự kiện này sảy ra khi người sử dụng click chuột trái vào nút lệnh (nút lệnh được thiết kế chính để đáp ứng sự kiện này). Ví dụ 1: Thêm vào form nút lệnh “Thoát” để đóng form, thiết lập các thuộc tính: Caption=Thoát Name=cmdThoat
  98. Simpo PDFKhi đó Merge dự kiện and cmdThoat.Click Split Unregistered được viết Version như sau: - IF MESSAGEBOX("Dong form nay lai?",4+32)=6 THEN thisform.Release ENDIF Ví dụ 2: Tạo form DMKHOA cho phép cập nhật danh mục khóa. Thêm vào Form các nút lệnh “Đầu”, “Trước”, “Sau” và “Cuối” để di chuyển con trỏ bản ghi của bảng DMKHOA về bản ghi đầu, bản ghi trước, bản ghi tiếp và bản ghi cuối. Lần lượt đặt tên cho các nút lệnh đó là cmdDau, cmdTruoc, cmdSau và cmdCuoi, láy ví dụ. Sửa lại chức năng trong các nút lệnh sao cho khi chuyển đến bản ghi đầu thì nút lệnh “Đầu”, “Trước” sẽ disable, khi chuyển đến bản ghi cuối thì các nút lệnh “Sau”, “Cuối” sẽ disable. 4. OptionGroup Box Sử dụng cho: Lựa chọn một trong nhiều khả năng. Các Properties thường dùng: 1) AutoSize: Tự động thay đổi kích thước của đối tượng cho phù hợp (phần thiết kế). Thuộc tính này nhận các giá trị .T. và .F. 2) ButtonCount:Số các tùy chọn 3) Value: Giá tị trả về của option, giá trị này là số thứ tự mục chọn. Khi thiết kế, có thể thay đổi một số thuộc tính khác của OptionGroup bằng cách nhấp chuột phải vào đối tượng, tiếp đến chon Builder Vì đây là một dạng container nên để thay đổi các thuộc tính các đối tượng con của nó bằng cách: nhấp chuột phải vào đối tượng, tiếp đến chọn Edit Các Methods và Events thường dùng: Không có methods, hoặc event nào đặt biệt nên không giới thiệu ở đây. Ví dụ: 5. CheckBox Sử dụng cho: Lựa chọn một trong 2 khả năng. Các Properties thường dùng: 1) Caption: Thể hiện phần text của đối tượng 2) Value: Checked - Giá trị 1 hoặc .T.; Unchecked - Giá trị 0 hoặc .F. Các Methods và Events thường dùng:
  99. Simpo PDF Merge1) Click and (Event) Split :Unregistered Sự kiện này sảy Version ra khi ng -ư sử dụng click chuột trái vào check box. Ví dụ: Giả sử dùng check box để hiển thị thông tin về giới tính với qui ước checked - Nam, và Unchecked là nữ. Khi đó sự kiện click được viết như sau: IF this.Value THEN this.Caption="Nam" ELSE this.Caption="N÷" ENDIF 6. Combo Box 7. List Box 8. Grid 9. Image 10. Timer 11. Page Frame Bài tậP
  100. Simpo PDF Merge and Split UnregisteredBài 10 - Version Tạo reports - và labels I. Giới thiệu Report là công cụ dùng để thiết kế các trang in báo cáo. Cấu trúc của report thường được thiết kế theo một trong các dạng sau: 1. Dạng cột (Column report): Mỗi Field là một cột và mỗi Record nằm trên 1 dòng, như danh sách lớp; bảng điểm. Ví dụ 2. Dạng dòng (Row report): Mỗi field nằm trên 1 hàng và mỗi, hết record này đến record khác. Ví dụ 3. Dạng một - nhiều (One - To - Many Report): Dữ liệu được lấy từ 2 bảng, 1 bảng cha và một bảng con (có quan hệ One-Many với nhau). Cứ mỗi record cha sẽ có các record con phía dưới. Ví dụ
  101. Simpo PDF Merge and Split Unregistered Version - 4. Dạng nhiều cột (Multi - Column report): Dạng cột và dòng như trên là dạng 1 “cột”, tuy nhiên có thể tạo các report trên thành dạng nhiều “cột”. Ví dụ II. Thiết kế report sử dụng Wizard Các bước thực hiện 1. Mở Project cần làm, trong Project Manager chọn Tab Documents 2. Chọn Report 3. Chọn New
  102. Simpo PDF4. MergeChọn Report and Split Wizard, Unregistered khi đó giao Versiondiện chọn - kiểu Report Wizard xuất hiện như hình sau: 5. Chọn kiểu Report Wizard: Report Wizard - Tạo Repor từ một bảng đơn, hoặc One-To- Many Report Wizard - Tạo Report từ 2 bảng có quan hệ (1-nhiều) với nhau. Ví dụ 1: Tạo Report từ bảng đơn (sử dụng Report Wizard) 1. Bước 0 - Bước 5 ở trên chọn Report Wizard, chọn OK 2. Step 1 - Select Fields: Chọn Database, Tables và Fields (Sử dụng lệnh >, >> để chọn các trường cần thiết. Khi đã chọn xong các trường, chọn Next để qua bước 2 (ví dụ chọn tất cả các trường của bảng DIEM).
  103. Simpo PDF3. MergeStep 2 and- Group Split Records: Unregistered Chọn trư Versionờng để nhóm - dữ liệu, có thể tạo ra nhiều cấp nhóm (ví dụ chọn 2 cấp nhóm: 1 là malop, 2 là masv), chọn Next để qua bước 3. 4. Step 3 - Choose Report Style: Chọn kiểu report (hình thức mỗi style khi được chọn sẽ hiển thị ở hình bên - ví dụ này chọn Ledger ), chọn Next để qua bước 4. 5. Step 4 - Define Report Layout: Thiết lập cấu trúc report Trong đó: Number of Columns: Số “Cột” (chỉ cho phép khi không chọn Group); Field Layout Columns: Các trường ở
  104. Simpo PDF Mergedạng cột and (dạng Split 1 -Unregistered chỉ cho phép khi Version không ch- Group); Field Layout Row: Các trường ở dạng dòng (dạng 2 - chỉ cho phép khi không chọn Group); Orientation Portrait: Hướng giấy theo chiều đứng; Orientation Landscape: Hướng giấy theo chiều ngang (Trong ví dụ này chúng ta bỏ qua Step 4). 6. Step 5 - Sort Records: Chọn cách sắp xếp các bản ghi. 7. Step 6 - Finish: Kết thúc, chọn finish rồi nhập vào tên file cần ghi để kết thúc.
  105. Simpo PDF Merge and Split Unregistered Version - Ví dụ 2: Tạo One - To - Many Report (Tương tự như ví dụ 1, sinh viên tự tìm hiểu) III. Thiết kế report sử dụng Report designer Các bước thực hiện 1. Mở Project cần làm, trong Project Manager chọn Tab Documents 2. Chọn Report 3. Chọn New 4. Chọn New Report, khi đó giao diện Report Designer xuất hiện như hình sau: Trong đó: Phía trên là thanh công cụ, cửa sổ Report Designer là phần thiết kế report, phía dưới là thanh Report Controls.
  106. Simpo PDF1. Bands Merge and Split Unregistered Version - Trong cửa sổ Report Designer có 3 phần: Page Header; Detail; Page Footer, các phần này gọi là các Band (nhóm). Mặc định (khi tạo mới) mỗi Report có 3 band như trên. Page Header: Những thiết kế trong phần này sẽ in lặp lại ở đầu mỗi trang Detail: Những thiết kế trong phần này sẽ in tương ứng với mỗi bản ghi của vùng làm việc hiện thời. Page Footer: Những thiết kế trong phần này sẽ in lặp lại ở cuối mỗi trang Ngoài các Band trên chúng ta còn có thể thêm vào band Title và Summary như sau: 1. Click chuột trái trên nền Report 2. Chọn Optional Bands, khi đó giao diện chương trình xuất hiện như hình sau: Đánh dấu chọn (check) vào các mục: Report has title band và Report has summary band, chọn OK để kết thúc. Khi đó giao diện Report Designer có dạng như hình sau:
  107. Simpo PDF Merge and Split Unregistered Version - Title: Những thiết kế trong phần này sẽ in một lần duy nhất ở đầu của Report. Summary: Những thiết kế trong phần này sẽ in một lần duy nhất ở cuối của Report. 2. Thanh công cụ Report Controls Trong thiết kế Report (Report Designer), Visual Foxpro cung cấp công cụ Report Control để đưa các điều kiển vào trong Report. Thanh Report control có dạng như hình sau. Các Control chính: 1. Label: Tạo nhãn, ví dụ như tiêu đề cột Cách thực hiện: a. Nhấp chuột trái vào biểu tượng label trên Report Controls b. Đưa chuột (khi đó có hình là chữ I) vào vị trí cần đặt label trên report rồi nhấp chuột trái. c. Nhập vào dong text cần thể hiện của label. 2. Field: Đưa dữ liệu từ các trường vào report. Cách thực hiện: a. Nhấp chuột trái vào biểu tượng Field trên Report Controls