VI. THAM CHIẾU ĐẾN CONTROL TRÊN FORM/REPORT
7. Di chuyển từ mẫu tin này sang mẫu tin khác: Các phương thức của RecordSet:
Các phương thức của RecordSet:
MoveFirst: Chuyển về mẫu tin đầu tiên. MoveLast: Chuyển về mẫu tin cuối cùng. MoveNext: Chuyển đến mẫu tin kế tiếp. MovePrivious: Chuyển đến mẫu tin ngay trước.
Các thuộc tính dùng để nhận biết mẫu tin hiện hành:
EOF: End Of File
BOF: Beginning Of File.
8. Tìm kiếm trong RecordSet loại DynaSet và SnapShot:Các phương thức: Các phương thức:
FindFirst “Điều kiện” : Tìm mẫu tin đầu tiên FindLast “Điều kiện” : Tìm mẫu tin cuối cùng
FindNext “Điều kiện” : Tìm mẫu tin sau mẫu tin hiện hành FindPrivious “Điều kiện” : Tìm mẫu tin trước mẫu tin hiện hành.
Thuộc tính NoMatch để biết kết quả tìm kiếm:
NoMatch = False : Nếu phép tìm kiếm cĩ kết quả. NoMatch = True : Nếu phép tìm kiếm khơng cĩ kết quả.
Bài tập 1: Viết chương trình nhập dữ liệu khách hàng vào bảng SANPHAM trong cơ sở dữ liệu
hiện hành. Trong quá trình nhập dữ liệu cĩ kiễm tra xem sản phẩm đã cĩ trong bảng hay chưa (kiễm tra Filed MASP). Nếu chưa cĩ thì nhập vào. Nếu cĩ rồi thì thơng báo lỗi và kết thúc nhập liệu
Private Sub CMDLUU_Click()
Dim DBS As Database 'khai bao bien kieu du lieu'
Dim RST As Recordset 'khai bao bien kieu doi tuong' ''''''''''''''' Set DBS = CurrentDb Set RST = DBS.OpenRecordset("SANPHAM", dbOpenTable) ''''''''''''''''''''
If Trim(Me.TXTMASP) = "" Then 'cat khoang trang neu bo trong'
MsgBox "MASP KHONG DUOC BO TRONG"
Else
RST.Index = "PRIMARYKEY" 'bat buoc co khoa chinh trong viec tim kiem'
RST.Seek "=", Me.TXTMASP 'tim kiem ban ghi dau tien thoa man dieu kien do tim' If RST.NoMatch Then 'xac dinh mau tin co tim thay trong viec tim kiem hay khong, nhan true khong tim thay false nguoc lai'
RST.AddNew RST!MaSP = Me.TXTMASP RST!TenSP = Me.TXTTENSP RST!Donvitinh = Me.TXTDVT RST!Dongia = Me.TXTDG RST!hinh = Me.TXTHINH
RST.Update ' cho phep cap nhap vao bien doi tuong' Me.TXTMASP = "" Me.TXTTENSP = "" Me.TXTDVT = "" Me.TXTDG = "" Me.TXTHINH = "" RST.Close '''''''''''''' Else
MsgBox "SAPPHAM NAY DA CO", vbOKOnly, "LOINHAPLIEU"
DoCmd.Close End If
End If End Sub
Private Sub Form_Load() Me.TXTMASP = "" Me.TXTTENSP = "" Me.TXTDVT = "" Me.TXTDG = "" Me.TXTHINH = "" Me.TXTMASP.SetFocus End Sub TEXTBOX PHẢI ĐẶT LẠI TÊN cho textbox là: Txtmasp Tương tự cho các textbox cịn lại.
Chú ý: Bài tập 1 cĩ thể áp dụng cho việc kiễm tra tìm kiếm MAKH; MASP và nhập liệu. (Thao tác làm tương tưï).
Bài tập 2: Viết chương trình tìm kiếm, cho phép nhập vào 1 Mã khách hàng. Nếu khơng cĩ thì cho phép nhập lại. Nếu thấy thì cho xuất ra màn hình đầy đủ các thành phần của các cột trong Table hiện lên Form.
Giải:
Private Sub TIMKIEM_Click()
Dim DBS As Database 'khai bao bien kieu du lieu'
Dim RST As Recordset 'khai bao bien kieu doi tuong' ''''''''''''''' Set DBS = CurrentDb Set RST = DBS.OpenRecordset("khachhang", dbOpenTable) ''''''''''''''''''''
RST.Index = "PRIMARYKEY" 'bat buoc co khoa chinh trong viec tim kiem'
RST.Seek "=", Me.txtmakh 'tim kiem ban ghi dau tien thoa man dieu kien do tim'
If Not RST.NoMatch Then 'xac dinh mau tin co tim thay trong viec tim kiem hay khong, nhan true khong tim thay false nguoc lai' MsgBox "khach hang NAY DA CO", vbOKOnly, "LOINHAPLIEU" Me.txttenkh = RST!TenKH Me.txtdiachi = RST!Diachi Me.txtdienthoai = RST!Dienthoai Me.TXTHINH = RST!hinh Else
MsgBox "khong co MAkh trong bang" ‘CHO RA DONG THONG BAO’
txtmakh.SetFocus RST.MoveNext End If
End Sub
CHÚ Ý: Tạo ra một Form bất kỳ, lấy dữ liệu từ Table KHACHHANG , hoặc Table khác (tuỳ yêu cầu đề bài). Nhưng khơng kéo dữ liệu từ Table xuống Form làm dữ liệu mà phải tạo riêng ra các Textbox rồi đặt lại tên mới.
Đây là chương trình tìm kiếm cho phép nhập vào MAKH. Nếu cĩ cho phép xuất ra màn hình MAKH này. Ngược lại cho dịng thơng báo.
Bạn cĩ thể áp dụng bài này cho việc tìm kiếm MASP, MASV, MANV… tuỳ yêu cầu đề bài mà làm tương tự chỉ việc thay đổi tên TEXTBOX cho phù hợp yêu cầu.
ĐẶT LẠI TÊN CHO TEXTBOX. VD: TXTMAKH…. TƯƠNG TỤ CHO CÁC TEXTBOX CỊN LẠI