• Hàm Vlookup trong Access
  • Hàm Vlookup trong Access

    Minh Tiên > 27-10-15, 06:05 PM

    Tiên có vấn đề này nhờ các Pro chỉ giáo:
    1. Bình thường: Hàm Vlookup có điều kiện được trình bày là:
       =Dlookup("FieldName","tableName","FieldName='" & Me.FieldName & "'") - Nếu Me.FieldName là string.

    2. Tiên muốn đổi FieldName, tableName thành các biến (Kiểm String) --> trình bày lại thành:   
    = DLookup(strFieldName, strTableName, " & strFieldName & " = " & strValue & ")

    Kết quả: Chương trình ko báo lỗi nhưng ko chạy đúng.

    Nhờ các Pro chỉ giáo trình cách bày đúng.
    Cảm ơn nhiều !
  • RE: Hàm Vlookup

    thucgia > 27-10-15, 09:28 PM

    (27-10-15, 06:05 PM)Minh Tiên Đã viết: Tiên có vấn đề này nhờ các Pro chỉ giáo:
    1. Bình thường: Hàm Vlookup có điều kiện được trình bày là:
       =Dlookup("FieldName","tableName","FieldName='" & Me.FieldName & "'") - Nếu Me.FieldName là string.

    2. Tiên muốn đổi FieldName, tableName thành các biến (Kiểm String) --> trình bày lại thành:   
    = DLookup(strFieldName, strTableName, " & strFieldName & " = " & strValue & ")

    Kết quả: Chương trình ko báo lỗi nhưng ko chạy đúng.

    Nhờ các Pro chỉ giáo trình cách bày đúng.
    Cảm ơn nhiều !

    Mã:
    ==>?DLookup("id","hoc_sinh","ten='aaaaaaa'")
    ==>?DLookup("id","hoc_sinh","ten" & "='" & "aaaaaaa" & "'")
    ==>?DLookup("id","hoc_sinh",strTen & "='" & strValue & "'")

    hi, coi chừng tẩu hỏa nhập ma :014:

    Nhân tiện tôi giới thiệu luôn cái func  sprintf()    cái này trong các ngôn ngữ như C#,php#,... đều có, rất hay.

    1, Dán cái func sau vào module tienIch

    Mã:
    Public Function sprintf(mask As String, ParamArray tokens()) As String
       Dim i As Long
       For i = 0 To UBound(tokens)
           mask = Replace$(mask, "{" & i & "}", tokens(i))
       Next
       sprintf = mask
    End Function

    2, Sử dụng

    Mã:
    ?sprintf("toi la Thucgia 100 tuoi")
    toi la Thucgia 100 tuoi
    ?sprintf("toi la {0} {1} tuoi","thucgia",100)
    toi la thucgia 100 tuoi
    ?sprintf("toi la {0} {1} tuoi","MinhTien",101)
    toi la MinhTien 101 tuoi

    3, Áp dụng trong trường hợp này

    Mã:
    ?DLookup("id","hoc_sinh",sprintf("ten='aaaaaaa'"))

    ?DLookup("id","hoc_sinh",sprintf("{0}='{1}'",strTen,strValue))

    4,Với câu lệnh sql


    Mã:
    sql="insert into hoc_sinh (id,ten,ngay_sinh) values (111,'thucgia',#01/01/2000#)"
    sql=sprintf("insert into hoc_sinh (id,ten,ngay_sinh) values ({0},'{1}','{2}')",111,"thucgia","#01/01/2000#")

    5, Hoặc là một doan lenh kha dai dong

    Mã:
       st = st & gc_dungChung.sprintf("                st = st & rs(i).Name & {0} : {1} & rs(i) & {2} ; {3}", Chr(34), Chr(34), Chr(34), Chr(34)) & vbCrLf
  • RE: Hàm Vlookup

    ongke0711 > 27-10-15, 11:25 PM

    Nếu không lầm thì cái biến strFieldName phải là 2 cái khác nhau. strFieldName1 # strFieldName2.
  • RE: Hàm Vlookup

    Minh Tiên > 28-10-15, 10:28 AM

    - Mình cần cái này: DLookup("id","hoc_sinh",strTen & "='" & strValue & "'")
    - Biến strFieldName không cần khác đâu bạn. Mình dùng chung, chạy Acc2013 vẫn OK. Ko biết Acc2003 có chạy được ko ?
    Cảm ơn bạn nhiều !
  • RE: Hàm Vlookup

    Noname > 28-10-15, 10:40 AM

    bạn xme demo của maidinhdan ở đây
    http://thuthuataccess.com/forum/thread-8313.html

    Có vài lưu ý, đối field cần có thêm cấu ngoặc vuông bao lại nữa.
  • RE: Hàm Vlookup

    thucgia > 28-10-15, 11:46 AM

    (28-10-15, 10:40 AM)Noname Đã viết: bạn xme demo của maidinhdan ở đây
    http://thuthuataccess.com/forum/thread-8313.html

    Có vài lưu ý, đối field cần có thêm cấu ngoặc vuông bao lại nữa.

    Mình thấy thêm móc trong câu sql thôi
    Mã:
    sql="insert into hoc_sinh ([id],[ten],[ngay_sinh]) values (111,'thucgia',#01/01/2000#)"