Thứ Hai, 14 tháng 1, 2008

Kiểm tra nhập liệu trong Visual Foxpro

Kiểm tra nhập liệu trong Visual Foxpro

Đó hỏi: Trong Visual Foxpro em đang thiết kế form để nhập liệu. Cần viết câu lệnh gì để chương trình hiển thị thông báo lỗi khi xảy ra trường hợp trùng khóa chính do lỗi nhập liệu?

Đây trả lời: Để bạn tham khảo, tôi trình bày một phương pháp đơn giản, sử dụng những gì có sẵn của Visual Foxpro (VFP). Giả sử bạn cần thiết kế form để nhập liệu cho tập tin KH_Code.DBF. Tập tin này có field Ma_KH được xem là khóa chính. Trong VFP, bạn chọn Tools > Wizards > Form. Trong hộp thoại Wizard selection, chọn mục Form wizard, bấm OK. Trong hộp thoại Step 1 – Select Fields, chọn Free Tables ở mục Databases and tables, bấm nút […] để mở bảng KH_Code. Bạn chọn các field (trong danh sách Available Fields) cần hiển thị trên form (ví dụ: Ma_KH và Ten_KH) bằng cách bấm kép vào tên field. Bấm Next để chuyển sang hộp thoại kế tiếp. Trong hộp thoại này, bạn lại bấm Next để chấp nhận kiểu form mặc định và chuyển sang hộp thoại kế tiếp. Tiếp tục bấm Next để chuyển sang hộp thoại Finish. Trong hộp thoại này, chọn Save form and modify it in the Form Designer, rồi bấm Finish để lưu form và mở form để sửa đổi (hình 1). Form vừa tạo có nhóm các nút lệnh do chính VFP tạo ra, nên thủ tục xử lý các tình huống Click của chúng đều được mặc định. Chọn View > Data Environment. Trong cửa sổ Data Environment (hình 2), bấm kép vào vùng trống để mở cửa sổ soạn thảo mã lệnh cho Data Environment, lần lượt gõ vào thủ tục xử lý tình huống OpenTables (đoạn mã 1) và CloseTables (đoạn mã 2) của DataEnvironment. Tiếp theo, bấm kép vào nhóm các nút lệnh để mở cửa sổ soạn thảo mã lệnh cho form. Sử dụng combo box Object và Procedure để gõ vào thủ tục xử lý tình huống Click của nút lệnh cmdAdd (đoạn mã 3) và nút lệnh cmdDelete (đoạn mã 4).

Đoạn mã 1

SELECT 0 ‘ Tạo danh sách các mã khách hàng có rồi CREATE CURSOR curListKH (Ma_KH C(7)) INDEX ON Ma_KH TAG Ma_KH APPEND FROM D:\VisualFoxpro9\KiemTraNhapTrungKhoaChinh\KH_Code.DBF

Đoạn mã 2

IF USED("curListKH") ‘ Xóa danh sách trước khi kết thúc USE IN curListKH ENDIF

Đoạn mã 3

IF "Save"$ This.Caption ‘ Vì nút lệnh Add và Save sử dụng chung IF SEEK(ThisForm.MA_KH1.Value, "curListKH") =MESSAGEBOX("Ma KH co roi!",0+16) ThisForm.MA_KH1.SetFocus ‘ Ma_KH1 là text box nhận dữ liệu cho Ma_KH RETURN ENDIF SELECT curListKH APPEND BLANK ‘ Thêm mã khách hàng vào danh sách tra cứu REPLACE Ma_KH WITH ThisForm.MA_KH1.Value SELECT KH_Code ENDIF =DODEFAULT() ‘ Thực thi mã lệnh mặc định của nút lệnh

Đoạn mã 4

SELECT curListKH SEEK ThisForm.MA_KH1.Value DELETE ‘ Xóa mã khách hàng khỏi danh sách tra cứu SELECT KH_Code =DODEFAULT() ‘ Thực thi mã lệnh mặc định của nút lệnh

Hình 1: Form cần thiết kế

Hình 2: Cửa sổ Data Environment

Không có nhận xét nào: