Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Lỗi: Run-time error '3075' Syntax error (missing operator) in query expression
#1
Chào cả nhà
Mình có 1 lỗi bên dưới xin cả nhà giúp
Mình có tạo 1 Textbox có tên Data Source với kiểu dữ liệu là Text và tạo 1 nút Cập Nhật Dữ Liệu
Khi mình nhập vào từ Lan's và nhấn Cập Nhật Dữ Liệu thì báo lỗi bên dưới

Run-time error '3075' Syntax error (missing operator) in query expression "Lan's" WHERE ID =1'.

Lỗi tại dòng lệnh màu vàng bên dưới
CurrentDb.Execute " UPDATE tblContacts SET [Data Source] = '" & Me.Data_Source & "' WHERE ID = " & Me.ID
Khi mình bỏ ' và nhập là Lan thôi thì không lỗi gì
Xin cả nhà tư vấn
Cảm ơn
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#2
Mình đưa file đính kèm, cả nhà xem giúp mình với nhé

http://www.mediafire.com/?mbuw4kj01rgpx01

username/password: admin/admin

Khi đăng nhập vào, tại giao diện chính, khi double-click vào 1 thông tin trong Listbox sẽ mở ra 1 form

Tại form này mình sẽ chỉnh sửa thông tin

Trong dòng First và Last: nếu nhập vào ký tự ' (dấu ngoặc đơn)thì sẽ báo lỗi

Xin cả nhà cùng hướng dẫn em cách khắc phục

Cảm ơn
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#3
Theo mình, bạn không nên cho user nhập vào các ký tự đặt biệt khi lưu trữ. Khi đó code trong nút cmdUpdate của bạn thế này:
Mã:
Private Sub cmdUpdate_Click()
On Error GoTo err
    CurrentDb.Execute " UPDATE tblNames SET First = '" & Me.First & "' WHERE RecordID = " & Me.RecordID
    
    CurrentDb.Execute " UPDATE tblNames SET Last = '" & Me.LAst & "' WHERE RecordID = " & Me.RecordID
    
    DoCmd.Close acForm, Me.Name
    Exit Sub
err:
If err.Number = 3075 Then
    MsgBox "ban da nhap vao mot ky tu dac biet vao fistname hoac lastname, vui long nhap lai gia tri 0-9, a-z", , "Thong bao"
Else
    MsgBox "ban bi loi " & err.Number & ":" & err.Description & Chr(13) & " Vui long lien he Admin ve loi nay"
End If
End Sub


@ Góp ý với bạn thế này:
- Tên các testbox không được mang từ khóa: tránh các sừ first, last, select... Tốt nhất là đặt theo chuẩn. ví dụ : txtFist, txtLast...
- Không được dùng ký tự đặt biệt khi nhập liệu để tránh lỗi. Chỉ khuyến khích user dùng ký tự từ 0-9, a-z khi nhập liệu
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn uronmapu
#4
Cảm ơn Noname đã có góp ý rất hay
Gợi ý đầu tiên của Noname: với ví dụ của mình thì ko hề ảnh hưởng, mình có thể thay giống như ý của Nome nhưng chắc chắn sẽ lỗi, và mình viết lỗi ở đây là do nhập ký tự đặc biệt (cụ thể là ký tự ' )

Có cách nào vẫn nhập được ký tự ' này ko Noname?

Mình cần nhập vào theo kiểu tiếng anh, ví dụ : Sách của Noname thì tiếng anh viết Noname's Book (chẳng nhẽ lại Book of Noname)
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#5
Mình đã thử nhập 1 số ký tự đặc biệt như bên dưới thì vẫn nhập được

! @ # $ % ^ & * ( ) - _ = + [ ] { } | \ ; : ‘ “ ? / , ` ~


chỉ có ký tự ' (ký tự này là ở nút dấu ngoặc kép cạnh bên trái nút Enter trên bàn phím) là bị báo lỗi

Có điều nữa là khi mình tạo mới với ký tự là ' thì vẫn lưu được

Nhưng khi double-click vào rồi sửa thông tin và nhấn update thì không được
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#6
Bạn thử tạo 1 function như sau:
Mã:
Function ReplaceS(s As String) As String
ReplaceS = Replace(s, "'", "''")

End Function

Lưu ý các dấu nháy đơn và nháy kép

Sau đó, thay thế cách gọi trực tiếp tới field bằng cách gọi hàm:
Mã:
Private Sub cmdUpdate_Click()

    CurrentDb.Execute " UPDATE tblNames SET tblNames.[First] = '" & ReplaceS(Me.First) & "' WHERE tblNames.[RecordID] = " & Me.[RecordID]
    
    CurrentDb.Execute " UPDATE tblNames SET tblNames.[Last] = '" & ReplaceS(Me.LAst) & "' WHERE tblNames.[RecordID] = " & Me.[RecordID]
    
    DoCmd.Close acForm, Me.Name

End Sub

Tuy nhiên mình nhắc lại một lần nữa: Không nên dùng ký tự đặt biệt, từ khóa để nhập liệu, đặt tên cho field... trong bất cứ trường hợp nào nếu sau này không muốn điên đầu với nó.

Việc của access là quản lý dữ liệu chứ không phải để trình diễn cho đẹp. Vì vậy cần Đúng và Chính Xác mới là ưu tiên hàng đầu.
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn uronmapu
#7
Cảm ơn Noname rất nhiều, mình làm theo gợi ý của Noname ok rồi

Lời khuyên của Noname mình cũng sẽ ghi nhận happy

Noname có thể giải thích thêm hàm của Noname bên dưới mục đích là gì không? dĩ nhiên là cho nhập ký tự ' rồi, nhưng chưa hiểu lắm

Mã:
Function ReplaceS(s As String) As String
ReplaceS = Replace(s, "'", "''")
End Function
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#8
Xét biểu thức
Mã:
[First] = '''
Ta thấy, 3 ký tự ', 2 ký tự đầu làm việc mở và kết thúc chuỗi. coi như là chuỗi rỗng. Một ký tự lẻ còn lại bắt đầu một chuỗi mới và hoàn toàn không có kết thúc nào. Debug của Access cho đó là lỗi không toàn vẹn và không thực thi lệnh.
Việc thay 1 dấu nháy đơn bằng 2 dấu nháy đơn để trình debug VBA bỏ qua lỗi đó và thực thi lệnh
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn uronmapu
#9
Cảm ơn Noname lần nữa happy
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Query hiện lên trên form? feeling 4 162 09-11-16, 09:49 PM
Bài mới nhất: toancvp
  [Help] Áp dụng query lọc dữ liệu nhập vào form amazonvn82 8 1,323 05-10-16, 03:11 PM
Bài mới nhất: amazonvn82
  Tạo Menu dạng TreeView bằng Query (không dùng ActiveX) ongke0711 2 233 05-07-16, 11:50 AM
Bài mới nhất: nam8384
  [Help] Cách tạo report có điều kiện từ crosstab query binhnguyenthanh 2 488 03-04-16, 12:08 AM
Bài mới nhất: binhnguyenthanh
  [Hỏi] Viết code để xử lý query cannguyen 16 937 13-11-15, 10:03 AM
Bài mới nhất: cannguyen

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ