Loc ngay trong Access (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thieuhung777

Thành viên mới
Tham gia
3/3/15
Bài viết
9
Được thích
0
Chào anh em

Mình có làm form dữ liệu lọc theo ngày tháng (từ ngày này đến ngày này), nhưng làm xong thì code không có chạy (chỉ tham khao trên diễn đàn), không biết sai ở chỗ nào, mong anh em trên diễn đàn chỉ giúp, đoạn code ở dưới

Private Sub cmdSearch_Click()
Dim conSQL As String
If IsDate(Begindate) And IsDate(EndDate) = False Then
conSQL = "SELECT order, datepacked, part, lot, quantity, comment " & _
"FROM Tableentry9999 " & _
"WHERE ([datepacked]>=[forms]![inputfr].[begindate] And [datepacked]<=[forms]![inputfr].[Enddate]) "
Me.subformsearch1.Form.RecordSource = conSQL
Else
MsgBox "Nothing happends"
Me.Begindate.SetFocus
End If
End Sub

Cám ơn anh em nhiều
 
- Điều kiện: nếu đúng là Date thì chạy cái SQL đúng ko? vậy phải = true mới đúng chứ.
- Cái hàm IsDate dễ đưa kết quả sai nếu cái [Begindate], [EndDate] sai định dạng, làm hàm hiểu lầm...Cái nội dung của BeginDate và EndDate như thế nào? --> 14.01.2015, 14/1/2015,"14.01.2015"....
 
Mình đã cho = True rồi nhưng nó báo lỗi , tất cả đoạn code nó hiện toàn màu đỏ và cũng không chạy nữa. Mình không tải file lên được
 
Chào anh em

Mình đã tải được file lên rồi, anh em trên diễn đàn giúp mình với.

BeginDate và EndDate định dạng là dd-mmm-yy, còn trong table Tableentry9999 ngày được định dạng là Medium Date
 

File đính kèm

Lần chỉnh sửa cuối:
Code gốc của bạn: đã dùng textbox BeginDate và EndDate rồi thì dùng "inputfr" chi nữa
----------------------------------------------
Private Sub cmdSearch_Click()
Dim conSQL As String
If IsDate(Begindate) And IsDate(EndDate) = True Then
conSQL = "SELECT order, datepacked, part, lot, quantity, comment " & _
"FROM Tableentry9999 " & _
"WHERE ([datepacked]>=[forms]![inputfr].[begindate] And [datepacked]<=[forms]![inputfr].[Enddate]) "
Me.subformsearch1.Form.RecordSource = conSQL
Else
MsgBox "Nothing happends"
Me.Begindate.SetFocus
End If
End Sub
----------------------------------------

Code trên bị sai chuỗi SQL, phải sửa lại là:
-------------
conSQL = "SELECT Tableentry9999.order, Tableentry9999.datepacked, Tableentry9999.part, Tableentry9999.lot, Tableentry9999.quantity, Tableentry9999.comment " & _
"FROM Tableentry9999 " & _
"WHERE (((Tableentry9999.datepacked)>=[Forms]![Form search]![Begindate] And (Tableentry9999.datepacked)<=[Forms]![Form search]![EndDate]));"

-----------
Nếu tìm records giữa 2 ngày thì nên dùng between để access chạy nhanh hơn dùng >= và <=.

"WHERE (((Tableentry9999.datepacked) between [Forms]![Form search]![Begindate] And [Forms]![Form search]![EndDate]));"
 
Chào anh em

Mình đã tải được file lên rồi, anh em trên diễn đàn giúp mình với.

BeginDate và EndDate định dạng là dd-mmm-yy, còn trong table Tableentry9999 ngày được định dạng là Medium Date

Thử thay cmdSearch_Click() thành thế này xem sao

PHP:
Private Sub cmdSearch_Click()
    Dim conSQL As String
    If IsDate(Begindate) And IsDate(EndDate) Then
        conSQL = "SELECT order, datepacked, part, lot, quantity, comment " & _
                 "FROM Tableentry9999 " & _
                 "WHERE [datepacked]>= #" & Me.Begindate.Value & "# And [datepacked]<= #" & Me.EndDate.Value & "#"
        Me.subformsearch1.Form.RecordSource = conSQL
    Else
        MsgBox "Nothing happends"
        Me.Begindate.SetFocus
    End If
End Sub
 
Nếu sửa được rồi thì thôi. Nếu chưa được thì đọc tiếp (tôi nghĩ là câu lệnh SQL sẽ bị lỗi, nhưng nếu bạn vẫn chạy được thì có lẽ tôi sai)

Tất cả các từ order, part là từ khoá đặt riêng của ngôn ngữ SQL. Khi thiết kế CSDL, người ta tránh dùng những từ này để đặt tên trường.
Tuy nhiên, nếu đã lỡ đặt rồi thì lúc truy vấn phải đặt chúng trong dấu đóng vuông: [order], [part], ...

Chú thích thêm: muốn lọc giữa 2 trị số thì dùng Where (triSo Between triMin And triMax)
 
Lần chỉnh sửa cuối:
Chào anh em

Cám ơn anh em đã chỉ bảo, mình sẽ làm thử nếu có gì chưa rõ mong anh em chỉ giúp. thank you .
 
Web KT

Bài viết mới nhất

Back
Top Bottom