Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Hàm Vlookup
#1
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 !
Reply
Những người đã cảm ơn
#2
(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
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Nếu không lầm thì cái biến strFieldName phải là 2 cái khác nhau. strFieldName1 # strFieldName2.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên
#4
- 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 !
Reply
Những người đã cảm ơn
#5
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.
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , Minh Tiên
#6
(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#)"
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan


Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ