• Tìm kiếm tiếng việt khi Link Access đến SQL Server
  • Tìm kiếm tiếng việt khi Link Access đến SQL Server

    tungthoi15 > 29-05-23, 11:57 AM

    Em có chương trình trên Web, Data là SQL Server; khi nhập liệu trên Web thì code là:
    Mã PHP:
    Dim SqlString As String "INSERT INTO tblDienThoai ( [SoCV],[LoaiCV], [NgayCV], [NgayGiao], [Loai], [Noidung]) VALUES ('" _
                    SoCVTextBox0
    .Text "', N'" _
                    LoaiCVTextBox0
    .Text.ToUpper "', '" _
                    NgayCVTextBox0
    .Text "', '" _
                    Today
    () & "', N'" _
                    DiDen
    .Text "', N'" _
                    NoidungTextBox0
    .Text "')”
            myConn.Open()
            cmd = New SqlCommand(SqlString, myConn)
            cmd.ExecuteNonQuery()
            myConn.Close() 

    Giờ em dùng Access để link đến SQL Server rồi filter, có đoạn code sau:
    Mã PHP:
        If Not IsNull(Me.txtNDThen
            strWhere1 
    strWhere1 "([Noidung] Like  ""*" Me.txtND "*"" ) AND "
        End If 
    Nhưng không ra kết quả, em đoán là do bảng mã Unicode, khi nhập liệu trên Web thì có Prefix là : N'
    Nếu Data trên Access thì đoạn code trên vẫn Filter bình thường
    Vậy giờ em phải làm thế nào? các bác giúp em với.
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    ongke0711 > 29-05-23, 12:48 PM

    (29-05-23, 11:57 AM)tungthoi15 Đã viết: Giờ em dùng Access để link đến SQL Server rồi filter, có đoạn code sau:
    Mã PHP:
        If Not IsNull(Me.txtNDThen
            strWhere1 
    strWhere1 "([Noidung] Like  ""*" Me.txtND "*"" ) AND "
        End If 
    Nhưng không ra kết quả, em đoán là do bảng mã Unicode, khi nhập liệu trên Web thì có Prefix là : N'
    Nếu Data trên Access thì đoạn code trên vẫn Filter bình thường

    SQL Server dùng T-SQL khác với Access SQL nên bạn phải thay đổi cú pháp khi truyền tham số như trên SQL SV thì nó mới hiểu.
    Thêm tiền tố "N" và thay dấu "*" --> "%"

    Mã PHP:
    strWhere1 strWhere1 "([Noidung] Like  N'%" Me.txtND "%') AND " 
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    tungthoi15 > 29-05-23, 02:46 PM

    [/quote]

    SQL Server dùng T-SQL khác với Access SQL nên bạn phải thay đổi cú pháp khi truyền tham số như trên SQL SV thì nó mới hiểu.
    Thêm tiền tố "N" và thay dấu "*" --> "%"

    Mã PHP:
    strWhere1 strWhere1 "([Noidung] Like  N'%" Me.txtND "%') AND " 
    [/quote]


    Không được anh ơi, nó báo lỗi dạng :
    Run time error 3075
    Syntax error (Missing Operator) in query expression....
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    ongke0711 > 29-05-23, 03:09 PM

    Bạn debug.print toàn bộ câu lệng SqL ra xem nó thiếu dấu nào đó.
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    tungthoi15 > 30-05-23, 10:16 PM

    (29-05-23, 03:09 PM)ongke0711 Đã viết: Bạn debug.print toàn bộ câu lệng SqL ra xem nó thiếu dấu nào đó.

    Em không biết thêm câu lệnh Debug.Print vào như thế nào?
    Toàn bộ code tìm kiếm của em như sau:
    Mã PHP:
    Private Sub cmdTimKiem_Click()
      Dim strWhere1 As String
        Dim lngLen 
    As Long
        
    Const conJetDate "\#mm\/dd\/yyyy\#"
      Call TatcaCV
    ' Tim Kiem Theo so CV
        If Not IsNull(Me.txtSo) Then
            strWhere1 = strWhere1 & "([SoCV] = """ & Me.txtSo & """) AND "
        End If
    Tim Kiem Theo Loai CV
        
    If Not IsNull(Me.txtLoaiThen
            strWhere1 
    strWhere1 "([LoaiCV] Like ""*" UNItokdau(Me.txtLoai) & "*"") AND "
        End If
        
    ' Tim Kiem Theo Noi Dung cong van
        If Not IsNull(Me.txtND) Then
                strWhere1 = strWhere1 & "([Noidung] Like  N '
    %" & Me.txtND & "%') AND "
        End If

    Tim Kiem theo Ngay CV
        
    If Not IsNull(Me.txtNgayCV1Then
            strWhere1 
    strWhere1 "([NgayCV] >= " Format(Me.txtNgayCV1conJetDate) & ") AND "
        End If
        If Not IsNull(Me.txtNgayCV2Then
            strWhere1 
    strWhere1 "([NgayCV] <= " Format(Me.txtNgayCV2conJetDate) & ") And "
        End If

    ' Tim Kiem theo Ngay Quyet Cong Van
        If Not IsNull(Me.txtngaygiao1) Then
            strWhere1 = strWhere1 & "([Ngaygiao] >= " & Format(Me.txtngaygiao1, conJetDate) & ") AND "
        End If
        If Not IsNull(Me.txtngaygiao2) Then
            strWhere1 = strWhere1 & "([Ngaygiao] <= " & Format(Me.txtngaygiao2, conJetDate) & ") And "
        End If


      ' 
    Tim Kiem theo Loai DiDen
        
        
    If Not IsNull(Me.cboLoaiThen
                    strWhere1 
    strWhere1 "([Loai] = """ UNItokdau(Me.cboLoai) & """) AND "
        End If
        
        lngLen 
    Len(strWhere1) - 5
        
    If lngLen <= 0 Then
            MsgboxU CV
    ("B¹n ph¶i gâ Ýt nhÊt mét ®iÒu kiÖn t×m kiÕm"), vbOKOnly"Thong bao"
        Else
            strWhere1 Left$(strWhere1lngLen)
        
            Me
    .Filter strWhere1
            Me
    .FilterOn True
            
        End 
    If

        
    End Sub 
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    tungthoi15 > 30-05-23, 10:21 PM

    Ví dụ em tìm từ "nhân sự" thì nó báo lỗi thế này: 
    [Hình: TCHsCDF.png]
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    ongke0711 > 31-05-23, 12:11 AM

    (30-05-23, 10:21 PM)tungthoi15 Đã viết: Ví dụ em tìm từ "nhân sự" thì nó báo lỗi thế này: 
    [img][Hình: TCHsCDF.png][/img]

    Thì biết nó báo lỗi câu lệnh SQL, bạn phải in ra toàn bộ câu lệnh khi nó thực thi mới kiểm tra lỗi chính tả, chấm, phẩy, ngoặc được chứ.
    Tôi mới nói thêm Debug.Print nguyên câu lệnh.

    À còn một cái nữa là bạn chạy câu lệnh này như thế nào từ Access? Dùng ADO hay Passthrough Query hay vẫn dùng CurrentDb. Execute (SQL)?
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    tungthoi15 > 31-05-23, 10:02 PM

    Em dùng Passthrough Query, Còn nút Tìm kiếm thì dùng Code sau để Filter trên Form: 
    Mã PHP:
    Private Sub cmdTimKiem_Click()
      Dim strWhere1 As String
        Dim lngLen 
    As Long
        
    Const conJetDate "\#mm\/dd\/yyyy\#"
      Call TatcaCV
    ' Tim Kiem Theo so CV
        If Not IsNull(Me.txtSo) Then
            strWhere1 = strWhere1 & "([SoCV] = """ & Me.txtSo & """) AND "
        End If
    Tim Kiem Theo Loai CV
        
    If Not IsNull(Me.txtLoaiThen
            strWhere1 
    strWhere1 "([LoaiCV] Like ""*" UNItokdau(Me.txtLoai) & "*"") AND "
        End If
        
    ' Tim Kiem Theo Noi Dung cong van
        If Not IsNull(Me.txtND) Then
                strWhere1 = strWhere1 & "([Noidung] Like  N '
    %" & Me.txtND & "%') AND "
        End If

    Tim Kiem theo Ngay CV
        
    If Not IsNull(Me.txtNgayCV1Then
            strWhere1 
    strWhere1 "([NgayCV] >= " Format(Me.txtNgayCV1conJetDate) & ") AND "
        End If
        If Not IsNull(Me.txtNgayCV2Then
            strWhere1 
    strWhere1 "([NgayCV] <= " Format(Me.txtNgayCV2conJetDate) & ") And "
        End If

    ' Tim Kiem theo Ngay Quyet Cong Van
        If Not IsNull(Me.txtngaygiao1) Then
            strWhere1 = strWhere1 & "([Ngaygiao] >= " & Format(Me.txtngaygiao1, conJetDate) & ") AND "
        End If
        If Not IsNull(Me.txtngaygiao2) Then
            strWhere1 = strWhere1 & "([Ngaygiao] <= " & Format(Me.txtngaygiao2, conJetDate) & ") And "
        End If


      ' 
    Tim Kiem theo Loai DiDen
        
        
    If Not IsNull(Me.cboLoaiThen
                    strWhere1 
    strWhere1 "([Loai] = """ UNItokdau(Me.cboLoai) & """) AND "
        End If
        
        lngLen 
    Len(strWhere1) - 5
        
    If lngLen <= 0 Then
            MsgboxU CV
    ("B¹n ph¶i gâ Ýt nhÊt mét ®iÒu kiÖn t×m kiÕm"), vbOKOnly"Thong bao"
        Else
            strWhere1 Left$(strWhere1lngLen)
        
            Me
    .Filter strWhere1
            Me
    .FilterOn True
            
        End 
    If

        
    End Sub 
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    ongke0711 > 31-05-23, 10:37 PM

    Và cuối cùng thì câu lệnh SQL sau khi debug.print đâu??? Tôi hỏi tới lần thứ 3 rồi mà cũng chẳng thấy...báo sai cú pháp mà chẳng thấy mặt mũi câu lệnh khi chạy nó ra sao thì bắt bệnh kiểu gì đây.

    [Hình: GjFhhow.png]
  • RE: Tìm kiếm tiếng việt khi Link Access đến SQL Server

    tungthoi15 > 02-06-23, 11:30 AM

    (31-05-23, 10:37 PM)ongke0711 Đã viết: Và cuối cùng thì câu lệnh SQL sau khi debug.print đâu??? Tôi hỏi tới lần thứ 3 rồi mà cũng chẳng thấy...báo sai cú pháp mà chẳng thấy mặt mũi câu lệnh khi chạy nó ra sao thì bắt bệnh kiểu gì đây.

    [Hình: GjFhhow.png]

    Em bị giống hệt luồng này, sau khi nghiên cứu, xem hướng dẫn của anh thì đã khắc phục được ạ. Cám ơn anh
    link em tìm được: https://thuthuataccess.com/forum/thread-11115.html