doandinhtam > 23-06-22, 04:15 PM
(21-06-22, 03:58 PM)ongke0711 Đã viết: Bạn xem file: https://www.mediafire.com/file/cwxyh6zfb...su.7z/file
Like IIf(IsNull([Forms]![frm_FNS]![ngayden1])=False,Between ([Forms]![frm_FLT]![ngayden1]) And ([Forms]![frm_FLT]![ngayden2]),"*")
ongke0711 > 23-06-22, 06:28 PM
(23-06-22, 04:15 PM)doandinhtam Đã viết: Nếu dữ liệu là dạng date và muốn sử dụng hàm between để tìm kiếm từ ngày A đến ngày B thì sử dụng query như thế nào?
mình dùng điều kiện như này có được không?
Mã:Like IIf(IsNull([Forms]![frm_FNS]![ngayden1])=False,Between ([Forms]![frm_FLT]![ngayden1]) And ([Forms]![frm_FLT]![ngayden2]),"*")
= IIf([Forms]![frm_FNS]![TuNgay] Is Null AND [Forms]![frm_FNS]![DenNgay] Is Null,"*", IIf([Forms]![frm_FNS]![TuNgay] Is Null,<= [Forms]![frm_FNS]![DenNgay], IIf([Forms]![frm_FNS]![DenNgay] Is Null,>= [Forms]![frm_FNS]![TuNgay], Between [Forms]![frm_FLT]![TuNgay] And [Forms]![frm_FLT]![DenNgay])))
doandinhtam > 24-06-22, 09:45 AM
SELECT tbl_LT.HOVATEN, tbl_LT.NGAYDEN
FROM tbl_LT
WHERE (((tbl_LT.HOVATEN) Like "*" & [Forms]![frm_FLT]![tkten] & "*") AND (([tbl_LT]![NGAYDEN] & "") Like IIf(Len([Forms]![frm_FLT]![ngayden1] & "")=0 And Len([Forms]![frm_FLT]![ngayden2] & "")=0,"*",IIf(Len([Forms]![frm_FLT]![ngayden1]&"")=0,([tbl_LT]![NGAYDEN] & "")<=[Forms]![frm_FLT]![ngayden2],IIf(Len([Forms]![frm_FLT]![ngayden2]&"")=0,([tbl_LT]![NGAYDEN] & "")>=[Forms]![frm_FLT]![ngayden1],([tbl_LT]![NGAYDEN] & "") Between [Forms]![frm_FLT]![ngayden1] And [Forms]![frm_FLT]![ngayden2])))));
ongke0711 > 24-06-22, 10:44 AM
(24-06-22, 09:45 AM)doandinhtam Đã viết:SQL của mình như này nhưng khi nhập giá trị vào ô NGAYDEN1 hoặc NGAYDEN2 là đều không ra dữ liệu. Ongke xem giùm mình.Mã:SELECT tbl_LT.HOVATEN, tbl_LT.NGAYDEN
FROM tbl_LT
WHERE (((tbl_LT.HOVATEN) Like "*" & [Forms]![frm_FLT]![tkten] & "*") AND (([tbl_LT]![NGAYDEN] & "") Like IIf(Len([Forms]![frm_FLT]![ngayden1] & "")=0 And Len([Forms]![frm_FLT]![ngayden2] & "")=0,"*",IIf(Len([Forms]![frm_FLT]![ngayden1]&"")=0,([tbl_LT]![NGAYDEN] & "")<=[Forms]![frm_FLT]![ngayden2],IIf(Len([Forms]![frm_FLT]![ngayden2]&"")=0,([tbl_LT]![NGAYDEN] & "")>=[Forms]![frm_FLT]![ngayden1],([tbl_LT]![NGAYDEN] & "") Between [Forms]![frm_FLT]![ngayden1] And [Forms]![frm_FLT]![ngayden2])))));
Ngayden1 là tìm từ ngày A
Ngayden2 là tìm đến ngày B
field NGAYDEN mình định dạng dd/mm/yyyy
textbox ngayden1 và ngayden2 định dạng shortdate
doandinhtam > 24-06-22, 10:49 AM
&""
ongke0711 > 24-06-22, 01:30 PM
doandinhtam > 24-06-22, 02:48 PM
(24-06-22, 01:30 PM)ongke0711 Đã viết: Đối với Form tìm kiếm nhiều điều kiện thì tốt nhất là dùng code VBA, Query đôi khi nó không giải quyết hết các điều kiện đâu.
Nên đọc lại tài liệu căn bản về Access, Query, các kiểu dữ liệu để còn biết cách xử lý.
Bạn sửa câu lệnh SQL lại như bên dưới:
WHERE (tbl_LT.HOVATEN Like "*" & [Forms]![frm_FLT]![tkten] & "*") AND IIf(IsNull([Forms]![frm_FLT]![txtNGAYDEN2]),[tbl_LT].[NGAYDEN]>=[Forms]![frm_FLT]![txtNGAYDEN1],IIf(IsNull([Forms]![frm_FLT]![txtNGAYDEN1]),[tbl_LT].[NGAYDEN]<=[Forms]![frm_FLT]![txtNGAYDEN2],[tbl_LT].[NGAYDEN] Between [Forms]![frm_FLT]![txtNGAYDEN1] And [Forms]![frm_FLT]![txtNGAYDEN2]))
ongke0711 > 24-06-22, 03:34 PM
(24-06-22, 02:48 PM)doandinhtam Đã viết: Mình đã thử nhưng vẫn không thành công. mình gửi file ongke fix giùm để mình nghiên cứu ạ
https://www.mediafire.com/file/rw0w0mdw2...accdb/file
SELECT tbl_NKT1.HOVATEN, tbl_NKT1.GIOITINH, tbl_NKT1.NAMSINH, tbl_NKT1.CMND, tbl_NKT1.CCCD, tbl_NKT1.NGAYDEN
FROM tbl_NKT1 WHERE tbl_NKT1.HOVATEN Like "*" & [Forms]![frm_FKT1]![tkten] & "*" AND IIf(IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN]>=[Forms]![frm_FKT1]![ngayden1],IIf(IsNull([Forms]![frm_FKT1]![ngayden1]),[tbl_NKT1].[NGAYDEN]<=[Forms]![frm_FKT1]![ngayden2],[tbl_NKT1].[NGAYDEN] Between [Forms]![frm_FKT1]![ngayden1] And [Forms]![frm_FKT1]![ngayden2])) AND [tbl_NKT1].[CMND] & "" Like IIf(Len([Forms]![frm_FKT1]![tkcmnd] & "")=0,"*",[Forms]![frm_FKT1]![tkcmnd]);
doandinhtam > 24-06-22, 03:53 PM
SELECT tbl_NKT1.HOVATEN, tbl_NKT1.GIOITINH, tbl_NKT1.NAMSINH, tbl_NKT1.CMND, tbl_NKT1.CCCD, tbl_NKT1.NGAYDEN
FROM tbl_NKT1
WHERE (((tbl_NKT1.HOVATEN) Like "*" & [Forms]![frm_FKT1]![tkten] & "*") AND ((IIf(IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN]>=[Forms]![frm_FKT1]![ngayden1],IIf(IsNull([Forms]![frm_FKT1]![ngayden1]),[tbl_NKT1].[NGAYDEN]<=[Forms]![frm_FKT1]![ngayden2],IIf(IsNull([Forms]![frm_FKT1]![ngayden1]) And IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN]="*",[tbl_NKT1].[NGAYDEN] Between [Forms]![frm_FKT1]![ngayden1] And [Forms]![frm_FKT1]![ngayden2]))))<>False) AND (([tbl_NKT1].[CMND] & "") Like IIf(Len([Forms]![frm_FKT1]![tkcmnd] & "")=0,"*",[Forms]![frm_FKT1]![tkcmnd])));
ongke0711 > 24-06-22, 05:27 PM
(24-06-22, 03:53 PM)doandinhtam Đã viết:Mình thêm điều kiện để nếu ngayden1 và ngayden2 = null thì NGAYDEN xuất tất cả các giá trị nhưng không được. ongke xem giùm mìnhMã:SELECT tbl_NKT1.HOVATEN, tbl_NKT1.GIOITINH, tbl_NKT1.NAMSINH, tbl_NKT1.CMND, tbl_NKT1.CCCD, tbl_NKT1.NGAYDEN
FROM tbl_NKT1
WHERE (((tbl_NKT1.HOVATEN) Like "*" & [Forms]![frm_FKT1]![tkten] & "*") AND ((IIf(IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN]>=[Forms]![frm_FKT1]![ngayden1],IIf(IsNull([Forms]![frm_FKT1]![ngayden1]),[tbl_NKT1].[NGAYDEN]<=[Forms]![frm_FKT1]![ngayden2],IIf(IsNull([Forms]![frm_FKT1]![ngayden1]) And IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN]="*",[tbl_NKT1].[NGAYDEN] Between [Forms]![frm_FKT1]![ngayden1] And [Forms]![frm_FKT1]![ngayden2]))))<>False) AND (([tbl_NKT1].[CMND] & "") Like IIf(Len([Forms]![frm_FKT1]![tkcmnd] & "")=0,"*",[Forms]![frm_FKT1]![tkcmnd])));
SELECT tbl_NKT1.HOVATEN, tbl_NKT1.GIOITINH, tbl_NKT1.NAMSINH, tbl_NKT1.CMND, tbl_NKT1.CCCD, tbl_NKT1.NGAYDEN
FROM tbl_NKT1
WHERE tbl_NKT1.HOVATEN Like "*" & [Forms]![frm_FKT1]![tkten] & "*" AND IIf(IsNull([Forms]![frm_FKT1]![ngayden1]) And IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN] Between #1/1/1900# And #1/1/2100#,IIf(IsNull([Forms]![frm_FKT1]![ngayden2]),[tbl_NKT1].[NGAYDEN]>=[Forms]![frm_FKT1]![ngayden1],IIf(IsNull([Forms]![frm_FKT1]![ngayden1]),[tbl_NKT1].[NGAYDEN]<=[Forms]![frm_FKT1]![ngayden2],[tbl_NKT1].[NGAYDEN] Between [Forms]![frm_FKT1]![ngayden1] And [Forms]![frm_FKT1]![ngayden2]))) AND [tbl_NKT1].[CMND] & "" Like IIf(Len([Forms]![frm_FKT1]![tkcmnd] & "")=0,"*",[Forms]![frm_FKT1]![tkcmnd]);