-
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:
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'Mã PHP:If Not IsNull(Me.txtND) Then
strWhere1 = strWhere1 & "([Noidung] Like ""*" & Me.txtND & "*"" ) AND "
End If
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:
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'Mã PHP:If Not IsNull(Me.txtND) Then
strWhere1 = strWhere1 & "([Noidung] Like ""*" & Me.txtND & "*"" ) AND "
End If
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 "*" --> "%"
[/quote]Mã PHP:strWhere1 = strWhere1 & "([Noidung] Like N'%" & Me.txtND & "%') AND "
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.txtLoai) Then
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.txtNgayCV1) Then
strWhere1 = strWhere1 & "([NgayCV] >= " & Format(Me.txtNgayCV1, conJetDate) & ") AND "
End If
If Not IsNull(Me.txtNgayCV2) Then
strWhere1 = strWhere1 & "([NgayCV] <= " & Format(Me.txtNgayCV2, conJetDate) & ") 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 Di, Den
If Not IsNull(Me.cboLoai) Then
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$(strWhere1, lngLen)
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:
-
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][/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.txtLoai) Then
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.txtNgayCV1) Then
strWhere1 = strWhere1 & "([NgayCV] >= " & Format(Me.txtNgayCV1, conJetDate) & ") AND "
End If
If Not IsNull(Me.txtNgayCV2) Then
strWhere1 = strWhere1 & "([NgayCV] <= " & Format(Me.txtNgayCV2, conJetDate) & ") 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 Di, Den
If Not IsNull(Me.cboLoai) Then
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$(strWhere1, lngLen)
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.
-
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.
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