Giả sử tên table sản phẩm của bạn là tbl_SanPham, tên trường mã sản phẩm là MaSP, tên trường giá tiền là DonGia thì bạn có thể sử dụng hàm sau:
Function GiaBan(MaSP As String) As Double
Dim db As Database, Rec As Recordset
'Trường hợp form nhập liệu và table sản phẩm được tạo trên cùng 1 tệp mdb
Set db = CurrenntDb
'Trường hợp form nhập liệu và table sản phẩm được tạo trên 2 tệp mdb khác nhau
Set db = OpenDatabase(“đường dẫn đến tệp mdb chứa table sản phẩm”)
Set Rec = db.OpenRecordset("tbl_SanPham", DB_OPEN_DYNASET)
Rec.FindFirst "MaSP = '" & MaSP & "'"
If Rec.NoMatch Then
GiaBan = 0
Else
GiaBan = IIf(IsNull(Rec!DonGia), 0, Rec!DonGia)
End If
Rec.Close
Set db = Nothing
End Function
Lưu ý:
- Nếu tên bảng và tên trường không giống thì bạn có thể sửa lại các tên trong hàm cho đúng với tên đã khai báo ở bảng để sử dụng.
- Nếu trường mã sản phẩm trong bảng bạn đặt là kiểu số thì dòng đầu tiên của hàm bạn khai lại như sau:
Function GiaBan(MaSP As Integer) As Double
và dong thứ 8 đổi thành:
Rec.FindFirst "MaSP = " & MaSP
- Sử dụng: giả sử ở form nhập liệu có textbox đơn giá tên là txt_DonGia và combobox mã sản phẩm tên là cbo_MaSP
Bạn có thêm dòng lệnh sau vào sự kiện afterupdate của combobox mã sản phẩm như sau:
txt_DonGia=DonGia(cbo_MaSP.value)
Chúc thành công!