• Filter Subfrom tiếng việt hoặc Rowsource Điều kiện tiếng việt
  • Filter Subfrom tiếng việt hoặc Rowsource Điều kiện tiếng việt

    Linh lê > 23-04-21, 09:59 PM

    Kính chào Anh/Chị.
    Em là thành viên mới, có vấn đề khó cần giúp đỡ, mong được giúp đỡ:
    Em có MainForm (Form_chinh), Subform (Bang1_subform từ Table Bang1), Table (Bang1: gồm 3 trường: ID, HoTen, Diachi). Khi Main form open sẽ load Subform dạng datasheet và lọc theo tiêu chí ID nằm trong khoảng (filter lần 1)
    Vấn đề khó khăn: tạo textbox (Txt_timkiem) tại Mainform để thể Filter cột Địa chỉ mà chứa tiếng việt, ví dụ: Đống Đa, Cầu Giấy... Tuy nhiên đều không thể ra.
    Code:
       Đã thử 2 phương án:
    Phương án 1:
        str = "Select * Bang1 where Diachi like " & "'" & "*" & Me.Txt_timkiem & "*" & "'"
        Me.Bang1_subform.Form.RecordSource = str
        Me.Bang1_subform.Form.Requery

    Phương án 2:
        str = "Select * Bang1 where Diachi like " & "'" & "*" & Me.Txt_timkiem & "*" & "'"
        Me.Bang1_subform.Form.Filter = str
        Me.Bang1_subform.Form.Filteron = True


    Anh/Chị giúp e  hoặc có phương pháp nào để tìm kiếm bằng tiếng việt được chỉ giúp e.
    Em cảm ơn
  • RE: Filter Subfrom tiếng việt hoặc Rowsource Điều kiện tiếng việt

    ongke0711 > 24-04-21, 12:28 AM

    Tìm kiếm tiếng Việt là bình thường của ứng dụng thôi bạn.
    Có 2 vấn đề trong file của bạn:

    1. Sửa lại câu lệnh SQL:

    str = "Select Bang1.* Where Diachi Like '*" & Me.Txt_timkiem & "*'"

    2. Xem lại font chữ sử dụng có đồng nhất không? Việc dùng bảng mã Unicode dựng sẳn hay tổ hợp sẽ ảnh hưởng tới từ khoá tìm kiếm.
    Ví dụ: trường [Địa chỉ dùng bảng mã Unicode tổ hợp để gõ tiếng Việt (hoặc do import/copy từ nguồn ngoài) nhưng trong Form tìm kiếm bạn gõ từ khoá cần tìm bằng Unicode dựng sẳn ==> sẽ không trả kết qủa về.
    Do đó Font chữ trong toàn bộ CSDL và Form phải nhất quán bảng mã. Chuẩn nhất bây giờ là dùng Unicode dựng sẳn.
  • RE: Filter Subfrom tiếng việt hoặc Rowsource Điều kiện tiếng việt

    tranthanhan1962 > 24-04-21, 12:29 AM

    Quan trọng là tên đối tượng.
    Xác định Main form có name là Mainform, Sub form có tên là SubForm, Trong SubForm chứa Form Datasheet có tên là Form1 có recordsource là table Bang1 dược lọc bởi Txt_timkiem năm trên Mainform.
    Có nhiều cach xử lý, đay là 1 cách:
    Private Sub Txt_timkiem_AfterUpdate()
      If VarType(Txt_timkiem.Value) = 8 Then
          Form_Form1.RecordSource = "SELECT Bang1.ID, Bang1.HoTen, Bang1.Diachi FROM Bang1 WHERE (((Bang1.Diachi)=[Forms]![Mainform]![Txt_timkiem]));"
      Else
          Form_Form1.RecordSource = "SELECT Bang1.* FROM Bang1;"
      End If
    End Sub
  • RE: Filter Subfrom tiếng việt hoặc Rowsource Điều kiện tiếng việt

    Linh lê > 24-04-21, 01:20 PM

    (24-04-21, 12:28 AM)ongke0711 Đã viết: Tìm kiếm tiếng Việt là bình thường của ứng dụng thôi bạn.
    Có 2 vấn đề trong file của bạn:

    1. Sửa lại câu lệnh SQL:

    str = "Select Bang1.* Where Diachi Like '*" & Me.Txt_timkiem & "*'"

    2. Xem lại font chữ sử dụng có đồng nhất không? Việc dùng bảng mã Unicode dựng sẳn hay tổ hợp sẽ ảnh hưởng tới từ khoá tìm kiếm.
    Ví dụ: trường [Địa chỉ dùng bảng mã Unicode tổ hợp để gõ tiếng Việt (hoặc do import/copy từ nguồn ngoài) nhưng trong Form tìm kiếm bạn gõ từ khoá cần tìm bằng Unicode dựng sẳn ==> sẽ không trả kết qủa về.
    Do đó Font chữ trong toàn bộ CSDL và Form phải nhất quán bảng mã. Chuẩn nhất bây giờ là dùng Unicode dựng sẳn.

    Em cảm ơn. e đã sửa lại câu lệnh.
    Bác có thể hướng dẫn rõ hơn chỗ Unicode tổ hợp và dựng sẵn không ạ. dữ liệu back end e để trong SQL server cả, và đều thuộc tính là Nvarchar.
  • RE: Filter Subfrom tiếng việt hoặc Rowsource Điều kiện tiếng việt

    ongke0711 > 24-04-21, 01:58 PM

    (24-04-21, 01:20 PM)Linh lê Đã viết: Em cảm ơn. e đã sửa lại câu lệnh.
    Bác có thể hướng dẫn rõ hơn chỗ Unicode tổ hợp và dựng sẵn không ạ. dữ liệu back end e để trong SQL server cả, và đều thuộc tính là Nvarchar.

    Trời cái quan trọng mà bạn không đề cập là dùng CSDL SQL Server.
    Đối với SQL Server, khi tìm kiếm chuỗi có dấu tiếng Việt, bạn phải dùng Pass Through Query để xử lý trực tiếp trên SQL SV rồi lấy kết quả về chứ Query mặc định của Access không làm được. Hoặc viết 1 stored procedure để xử lý.
    Bạn đang dùng kiểu kết nối gì từ Access tới SQL SV? Dùng linked table thông qua ODBC hay ADODB?