• Form tìm kiếm lớn hơn nhỏ hơn
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    NguyenDungAnh > 21-08-18, 04:55 PM

    (21-08-18, 10:46 AM)tranthanhan1962 Đã viết:
    (21-08-18, 10:18 AM)NguyenDungAnh Đã viết: 1.Cám ơn bác an, tại lúc trong query em bấm > hay < thì đều chạy được mặc dù mã vật tư đó em để kiểu text. Cũng không biết tại sao, kể cả trong field khác cùng query em sử dụng toán tử ví dụ như: iif(mavattu<"200";soluong;0) thì query vẫn chạy bình thường vẫn cho ra kết quả đúng lên em cứ vậy sử dụng.
    2. Bây giờ em phải viết code để đổi text ra num hay là em chỉ cần format kiểu #.### là nó chạy được hả bác.
    Phải dùng hàm đổi kiểu.

    Bác an ơi tình hình là thế này
    em có tạo lại một file mới để kiểu number rồi nhưng trong query vẫn không lọc được theo dấu lớn hơn hay nhỏ hơn mà chỉ nhập số chính xác vào được thôi.
    http://www.mediafire.com/file/913cc39g6x...accdb/file
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    tranthanhan1962 > 21-08-18, 06:00 PM

    OK! Ngồi nghĩ mãi mới hiểu được ý của bạn. Bạn dùng textbox giatri để xử lý việc tìm kiếm.
    Giả sử bạn gõ vào số 200 thì cho dù mavattu là chữ hay số thì bộ lọc vẫn làm việc vì ở đây tìm chính xác giá trị 200 nếu có 200 thì nó lôi ra.
    Nhưng khi bạn gõ vào >200 thì bộ lọc sẽ tìm giá trị text ">200". Giá trị text ">200" ỡ đây có nghĩa là một text có bốn ký tự >+2+0+0. tất nhiên trong query bạn không bao giờ có giờ có giá trị này. Bạn không thể đưa một cú pháp SQL vào textbox để xử lý theo SQL được.
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    NguyenDungAnh > 21-08-18, 06:10 PM

    à ra vậy em cám ơn bác. tức là không có cách nào có thể lọc dữ liệu như kiểu đó trong SQL đc hả bác.
    Bác cho em hỏi cái này nữa.
    1. Ở ô criteria mình vẫn dùng so sánh được kiểu như em gõ vào là >[Forms]![fr01]![giatri] hay <[Forms]![fr01]![giatri] thì vẫn được nhưng em dùng hàm iif() ở trong ô đó thì hình như không được phải không bác.
    2. Bác giúp em xem đoạn code này của em phần SQL sai ở đâu với
    Option Compare Database
    Public db As DAO.Database
    Public rs As DAO.Recordset
    Sub test()
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT chitiet.mavattu FROM nhapxuat INNER JOIN chitiet ON nhapxuat.Maphieu = chitiet.maphieu WHERE (((nhapxuat.ngay) Between Forms!fr01!tn And forms!fr01!dn)) GROUP BY chitiet.mavattu;")
    For i = 1 To rs.RecordCount
    Debug.Print rs.Fields("mavattu")
    rs.MoveNext
    Next
    db.Close
    End Sub

    em cám ơn bác!
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    NguyenDungAnh > 21-08-18, 06:13 PM

    Nếu em không đặt where thì chạy bình thường nhưng cho where vào thì lại không chạy được
    Cái code SQL là em tạo query xong copy lại phần SQL rồi paste vào cái openrecordset
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    Xuân Thanh > 21-08-18, 07:47 PM

    (21-08-18, 06:10 PM)NguyenDungAnh Đã viết: à ra vậy em cám ơn bác. tức là không có cách nào có thể lọc dữ liệu như kiểu đó trong SQL đc hả bác.
    Bác cho em hỏi cái này nữa.
    1. Ở ô criteria mình vẫn dùng so sánh được kiểu như em gõ vào là >[Forms]![fr01]![giatri] hay <[Forms]![fr01]![giatri] thì vẫn được nhưng em dùng hàm iif() ở trong ô đó thì hình như không được phải không bác.
    2. Bác giúp em xem đoạn code này của em phần SQL sai ở đâu với
    Option Compare Database
    Public db As DAO.Database
    Public rs As DAO.Recordset
    Sub test()
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT chitiet.mavattu FROM nhapxuat INNER JOIN chitiet ON nhapxuat.Maphieu = chitiet.maphieu WHERE (((nhapxuat.ngay) Between Forms!fr01!tn And forms!fr01!dn)) GROUP BY chitiet.mavattu;")
    For i = 1 To rs.RecordCount
    Debug.Print rs.Fields("mavattu")
    rs.MoveNext
    Next
    db.Close
    End Sub

    em cám ơn bác!

    Cái Between trong câu lệnh SQL là cái gì vậy?
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    NguyenDungAnh > 22-08-18, 08:20 AM

    (21-08-18, 07:47 PM)Xuân Thanh Đã viết:
    (21-08-18, 06:10 PM)NguyenDungAnh Đã viết: à ra vậy em cám ơn bác. tức là không có cách nào có thể lọc dữ liệu như kiểu đó trong SQL đc hả bác.
    Bác cho em hỏi cái này nữa.
    1. Ở ô criteria mình vẫn dùng so sánh được kiểu như em gõ vào là >[Forms]![fr01]![giatri] hay <[Forms]![fr01]![giatri] thì vẫn được nhưng em dùng hàm iif() ở trong ô đó thì hình như không được phải không bác.
    2. Bác giúp em xem đoạn code này của em phần SQL sai ở đâu với
    Option Compare Database
    Public db As DAO.Database
    Public rs As DAO.Recordset
    Sub test()
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT chitiet.mavattu FROM nhapxuat INNER JOIN chitiet ON nhapxuat.Maphieu = chitiet.maphieu WHERE (((nhapxuat.ngay) Between Forms!fr01!tn And forms!fr01!dn)) GROUP BY chitiet.mavattu;")
    For i = 1 To rs.RecordCount
    Debug.Print rs.Fields("mavattu")
    rs.MoveNext
    Next
    db.Close
    End Sub

    em cám ơn bác!

    Cái Between trong câu lệnh SQL là cái gì vậy?

    Em tạo một cái query ở phần ngày em đặt between ..... and ......... lấy ngày từ trên form xuống bác ạ.
    Xong em cho query hiện ở chế chộ SQL rồi copy câu lệnh đó vào code.
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    ongke0711 > 23-08-18, 09:00 PM

    Between Forms!fr01!tn And Forms!fr01!dn

    2 tham số Forms!fr01!tnForms!fr01!dn là tham số được truyền vào ở thời điểm xử lý câu lệnh SQL nên bạn viết như vậy VBA nó không hiểu.
    Phải sửa lại: thêm dấu "&"
     "SELECT chitiet.mavattu FROM nhapxuat INNER JOIN chitiet ON nhapxuat.Maphieu = chitiet.maphieu WHERE nhapxuat.ngay Between #" & Forms!fr01!tn & "# And #" & Forms!fr01!dn & "# GROUP BY chitiet.mavattu;"
  • RE: Form tìm kiếm lớn hơn nhỏ hơn

    NguyenDungAnh > 24-08-18, 08:31 PM

    Cám ơn bác em đã làm được rồi!