1. Kỹ thuật DAO
1.8 Bài toán cập nhật dữ liệu
Nhập dữ liệu là yêu cầu gần như bắt buộc đối với bất kỳ ứng dụng nào. Với công nghệ DAO, Data Control là điều khiển rất phù hợp cho bài toán này. Dưới
đây minh họa vắ dụ tạo form nhập dữ liệu cho bảng CHUCVU sử dụng công nghệ này:
Vắ dụ 1: thiết kế form nhập dữ liệu đơn giản
Bước 2: thiết lập một số thuộc tắnh cho các điều khiển trên form như sau:
Điều khiển Data1
- Thuộc tắnh DatabaseName Ố hãy trỏ tới tệp CSDL Quản lý lương;
- Thuộc tắnh RecordSource - chọn bảng cần nhập dữ liệu (bảng CHUCVU).
Nút Thêm mới, thuộc tắnh name là cmdThemMoi;
Nút Xóa bản ghi, thuộc tắnh name là cmdXoa;
Nút Đóng, thuộc tắnh name là cmdDong;
Ô nhập Mã chức vụ:
Mỗi một ô để nhập dữ liệu trên form yêu cầu tối thiểu phải thiết lập 2 thuộc tắnh là:
- DataSource - để khai báo nguồn dữ liệu cho ô này lấy từ đâu (bảng nào)? Thông thường lấy từđiều khiển Data Control liên kết tới bảng dữ liệu;
- DataField Ố để khai báo trường dữ liệu sẽ liên kết tới ô nhập dữ liệu hiện tại. Thuộc tắnh này phải được thiết lập sau thuộc tắnh DataSource mới có tác dụng.
Với form trên, 3 đối tượng dùng nhập dữ liệu phải thiết lập các thuộc tắnh như
sau:
Đối tượng DataSource DataField
Text1 Data1 chucvuID
Text2 Data1 Tenchucvu
Text3 Data1 Phucapcv
Bước 3: viết mã lệnh điều khiển cho các nút lệnh trên form như sau:
Private Sub cmdThemMoi_Click()
'--- 'lện thêm bản ghi mới ' Data1.Recordset.AddNew '---
'trước khi nhập dữ liệu, chuyển con trỏ tới ô mã chức vụ '
Text1.SetFocus
End Sub
Private Sub cmdXoa_Click()
Dim thongbao
thongbao = MsgBox("Đã chắc chắn xóa chưa?", vbYesNo) If thongbao = vbYes Then
'---
'lệnh xóa bản ghi hiện tại trên Data1 '
Data1.Recordset.Delete End If
End Sub
Private Sub cmdDong_Click()
Unload Me
End Sub
Vắ dụ 2: Sử dụng DbGrid
Với DbGrid, việc thiết kế một giao diện nhập dữ liệu đơn giản hơn và dễ sử
dụng hơn. Dưới đây giới thiệu cách sử dụng điều khiển này. Bước 1: thiết kế giao diện form như sau:
Trong trường hợp không thấy điều khiển DbGrid trên thanh ToolBar, hãy kắch hoạt nó bởi cửa sổ Components như sau:
Bước 2: thiết lập các thuộc tắnh phù hợp cho các đối tượng:
Điều khiển Data1
- Thuộc tắnh DatabaseName Ố hãy trỏ tới tệp CSDL Quản lý lương;
- Thuộc tắnh RecordSource - chọn bảng cần nhập dữ liệu (bảng CHUCVU); - Thuộc tắnh Visible = False (để ẩn điều khiển Data này khi chạy chương
trình).
Nút Thêm mới, thuộc tắnh name là cmdThemMoi;
Nút Đóng, thuộc tắnh name là cmdDong;
Điều khiển DbGrid1
- Thuộc tắnh DataSource Ố chọn nguồn dữ liệu sẽ hiển thị lên DbGrid (chọn Data1);
- Thuộc tắnh AllowAddNew = True; - Thuộc tắnh AllowDelete = True; - Thuộc tắnh AllowUpdate = True;
- Thuộc tắnh DataMode = 0 Ố Bound (tức là tự động gắn kết dữ liệu tới bảng dữ liệu);
- Cuối cùng nhấn phải chuột lên DbGrid chọn thực đơn Retrieve Fields để tự động thiết lập tiêu đề các cột và định vị thứ tự các cột trong bảng dữ liệu lên các cột tương ứng trên DbGrid.
Hơn nữa, nếu chọn mục Properties để có thể thiết lập được nhiều hơn các thuộc tắnh khác làm DbGrid trở nên đẹp hơn. Việc này bạn đọc tự nghiên cứu.
Bước 3: Viết lệnh cho form như sau:
Private Sub cmdXoa_Click()
Dim thongbao
thongbao = MsgBox("Đã chắc chắn xóa chưa?", vbYesNo) If thongbao = vbYes Then
'---
'lệnh xóa bản ghi hiện tại trên Data1 '
Data1.Recordset.Delete End If
End Sub
Private Sub cmdDong_Click()
Unload Me
End Sub
Với phương pháp này không cần sử dụng phương thức thêm bản ghi mới (bởi trên DbGrid đã tựđộng cho phép làm việc này).