PDA

View Full Version : lỗi insert vào table (regarding truncate)



cuteboy_vn
18-04-2004, 13:36
Câu lệnh sau dùng để insert new record vào 1 table thì gặp phải lỗi: "String or binary data would be truncated. The statement has been terminated".

đây là câu lệnh (có kèm theo screenshot của table):

"Insert into Members values('" & Trim(txtusername.Text) & "','" & EncodePassword(txtpassword.Text) & "','" & Trim(txtemail1.Text) & "','Scum','Alive',100,'2000',1,1,'" & myHomeTown & "',' ','" & ActNumber & "','" & Today.Date & "','noavatar.gif')"

mong các bạn chỉ giúp cách khắc phục.

phatnq2003
18-04-2004, 15:28
Câu lệnh sau dùng để insert new record vào 1 table thì gặp phải lỗi: "all string and binary data must be truncated".

đây là câu lệnh (có kèm theo screenshot của table):

"Insert into Members values('" & Trim(txtusername.Text) & "','" & EncodePassword(txtpassword.Text) & "','" & Trim(txtemail1.Text) & "','Scum','Alive',100,'2000',1,1,'" & myHomeTown & "',' ','" & ActNumber & "','" & Today.Date & "','noavatar.gif')"

mong các bạn chỉ giúp cách khắc phục, mình tìm hoài không ra chỗ nào chưa được truncated???

Theo cách viết của bạn, tôi đề nghị bạn 2 điều:
Thứ nhất: chỗ JoinedDate bạn không nên truyền string cho nó bởi vì nó có kiểu datetime. Bạn nên dùng hàm CONVERT để chuyển sang dạng ngày.
"Insert into Members values('" & Trim(txtusername.Text) & "','" & EncodePassword(txtpassword.Text) & "','" & Trim(txtemail1.Text) & "','Scum','Alive',100,'2000',1,1,'" & myHomeTown & "',' ','" & ActNumber & "',CONVERT(datetime," & Today.Date & ",101) ,'noavatar.gif')"
Tham số 101 quy định dạng hiển thị ngày. Bạn có thể tham khảo thêm Help để lấy đúng tham số mình cần để phù hợp với dạng datetime trên server.

Thứ hai: bạn hãy chọn lại kiểu varchar cho các field có kiểu char thử xem.

cuteboy_vn
18-04-2004, 16:35
OK, mình đã thử dùng Convert.ToDateTime(Today.Date) trong VB.Net rùi mà vẫn ko được.??? còn kiểu char đổi qua varchar cũng ko khắc phục được lỗi.

phatnq2003
20-04-2004, 00:04
OK, mình đã thử dùng Convert.ToDateTime(Today.Date) trong VB.Net rùi mà vẫn ko được.??? còn kiểu char đổi qua varchar cũng ko khắc phục được lỗi.

Bạn nên dùng hàm CONVERT của SQL để chuyển đổi trong store đừng dùng hàm Convert của VB.NET vì nó không làm thay đổi ý nghĩa trả về của chuỗi SQL mà bạn thiết lập. Do đó theo tôi nghĩ bạn nên thử lại lần nữa xem sao.

ptran
20-04-2004, 09:19
một trong những fields đó không đủ độ dài để chứa cái string add vô nên bị lỗi đó . Tăng các fields char lên nhiều một chút (ví dụ như HomeTown lên 50 ...).

phatnq2003
25-04-2004, 00:49
một trong những fields đó không đủ độ dài để chứa cái string add vô nên bị lỗi đó . Tăng các fields char lên nhiều một chút (ví dụ như HomeTown lên 50 ...).

Có lý! Bạn phát hiện đúng, mình quên cái dzụ này. Thank you. :shifty: