Tin tức mới

    Đăng ký nhận báo giá 2026

    DLookup trong Microsoft Access

    Nếu bạn đang làm việc với Microsoft Access, DLookup giống như một “người vận chuyển” tận tụy. Nó giúp bạn tìm kiếm một giá trị cụ thể trong một bảng (Table) hoặc một truy vấn (Query) mà không cần phải mở bảng đó ra hay viết code SQL phức tạp.

    Dưới đây là hướng dẫn chi tiết nhưng cực kỳ dễ hiểu để bạn làm chủ hàm này.

    1. Cấu trúc của hàm DLookup

    Hàm DLookup có 3 thành phần chính (đối số), tất cả đều phải nằm trong dấu ngoặc kép “”:

    DLookup("Trường cần lấy", "Nguồn dữ liệu", "Điều kiện lọc")
    Trường cần lấy: Tên của cột dữ liệu bạn muốn lấy giá trị về (ví dụ: TenSanPham, GiaBan). Nguồn dữ liệu: Tên của Table hoặc Query chứa dữ liệu đó. Điều kiện lọc: (Tùy chọn) Giống như lệnh WHERE để chỉ định chính xác dòng nào cần lấy. Nếu bỏ qua, Access sẽ bốc đại dòng đầu tiên nó thấy.

    2. Các ví dụ thực tế

    Hãy giả sử bạn có một bảng tên là NhanVien. Trường hợp 1: Lấy dữ liệu với điều kiện là số Bạn muốn tìm tên nhân viên có mã số là 10. =DLookup("HoTen", "NhanVien", "ID = 10") Trường hợp 2: Lấy dữ liệu với điều kiện là chữ (Text) Khi điều kiện là chữ, bạn cần bao bọc giá trị đó bằng dấu nháy đơn '. =DLookup("SoDienThoai", "NhanVien", "HoTen = 'Nguyen Van A'") Trường hợp 3: Lấy dữ liệu dựa trên một ô (Control) trên Form Đây là cách dùng phổ biến nhất. Ví dụ: Bạn nhập mã nhân viên vào ô txtMaNV và muốn một ô khác hiện tên tương ứng. =DLookup("HoTen", "NhanVien", "ID = " & [txtMaNV])

    3. Những lưu ý "sống còn" để không bị lỗi

    DLookup rất hữu ích nhưng cũng khá "nhạy cảm". Hãy nhớ các quy tắc sau: Giá trị Null: Nếu không tìm thấy kết quả, DLookup trả về Null. Để tránh lỗi hiển thị, bạn nên kết hợp với hàm Nz. Ví dụ: Nz(DLookup(...), "Không tìm thấy") Tốc độ: DLookup sẽ chạy chậm nếu bạn dùng nó trong một Query có hàng ngàn bản ghi. Nó phù hợp nhất để dùng trên Form hoặc Report. Dấu ngoặc vuông []: Nếu tên bảng hoặc tên trường của bạn có khoảng trắng (ví dụ: Ho Ten), bạn bắt buộc phải dùng dấu ngoặc vuông: [Ho Ten].

    4. Bảng so sánh các kiểu dữ liệu trong điều kiện

    Kiểu dữ liệu Cú pháp ví dụ
    Số (Number) "ID = " & [txtID]
    Chữ (Text) "Ten = '" & [txtTen] & "'"
    Ngày tháng (Date) "NgayVaoLam = #" & [txtNgay] & "#"

    5. Ví dụ dùng hàm DLookup với Form Đăng nhập

    a. Bảng NguoiDung có các trường sau: TenDangNhap: Tên Đăng Nhập MatKhau: Mật Khẩu b. frmLogin có các thành phần sau: txtTenDangNhap: Textbox để nhập Tên Đăng Nhập txtMatKhau: Textbox để nhập Mật Khẩu c. Code thực hiện quy trình đăng nhập
    
    Option Compare Database
    Option Explicit
    
    Private Sub btnDangNhap_Click()
        ' Khai bao bien
        Dim varMatKhau As Variant
        
        ' Bat dau bay loi
        On Error GoTo Err_Handler
    
        ' 1. Kiem tra rong (Validation)
        If IsNull(Me.txtTenDangNhap) Or Me.txtTenDangNhap = "" Then
            MsgBox "Vui long nhap Ten Dang Nhap!", vbExclamation, "Thong Bao"
            Me.txtTenDangNhap.SetFocus
            Exit Sub
        End If
        
        If IsNull(Me.txtMatKhau) Or Me.txtMatKhau = "" Then
            MsgBox "Vui long nhap Mat Khau!", vbExclamation, "Thong Bao"
            Me.txtMatKhau.SetFocus
            Exit Sub
        End If
        
        ' 2. Dung DLookup de tim mat khau
        varMatKhau = DLookup("MatKhau", "NguoiDung", "TenDangNhap = '" & Me.txtTenDangNhap & "'")
        
        ' 3. Kiem tra logic dang nhap
        If IsNull(varMatKhau) Then
            MsgBox "Ten dang nhap khong ton tai!", vbCritical, "Loi"
        Else
            ' So sanh mat khau (Dung vbBinaryCompare de phan biet hoa thuong)
            If StrComp(varMatKhau, Me.txtMatKhau, vbBinaryCompare) = 0 Then
                MsgBox "Dang nhap thanh cong! Chao mung " & Me.txtTenDangNhap, vbInformation, "Thanh Cong"
                
                ' Mo Form chinh va dong Form dang nhap
                ' DoCmd.OpenForm "frmMain"
                ' DoCmd.Close acForm, Me.Name
            Else
                MsgBox "Mat khau khong chinh xac!", vbCritical, "Loi"
                Me.txtMatKhau = ""
                Me.txtMatKhau.SetFocus
            End If
        End If
    
    ' Tram dung de thoat code an toan
    Exit_Sub:
        Exit Sub
    
    ' Xu ly khi co loi bat ngo
    Err_Handler:
        MsgBox "Da xay ra loi he thong!" & vbCrLf & _
               "Ma loi: " & Err.Number & vbCrLf & _
               "Mo ta: " & Err.Description, vbCritical, "Loi VBA"
        Resume Exit_Sub
        
    End Sub
    
    Private Sub FORM_LOAD()
        Me.lblLoginForm.Caption = UCase(Me.lblLoginForm.Caption)
    End Sub

    6. Video hướng dẫn login form với Dlookup

    Yêu cầu tư vấn

      Tư vấn sản phẩm phù hợp

      Yêu cầu báo giá

      Yêu cầu tư vấn kỹ thuật

      Leave a Reply

      Your email address will not be published. Required fields are marked *

      Gọi ngay 24/7 Zalo Messenger Support
      Gọi ĐT tư vấn ngay Chat ngay qua Messenger Chat ngay qua Zalo
      Yêu cầu tư vấn

        Tư vấn sản phẩm phù hợp

        Yêu cầu báo giá

        Yêu cầu tư vấn kỹ thuật