Lỗi không insert vào CSDL được viết bằng visual basic.net

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Moderators: tungblt, vuathongtin

Post Reply
User avatar
minhhath
Thành viên năng nổ
Thành viên năng nổ
Posts: 78
Joined: Sun 17/01/2010 3:24 pm
Location: p5,Tỉnh Cà Mau
Has thanked: 8 times
Contact:

Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by minhhath »

Hi mọi người cho mình hỏi mình vướng chổ nào mà khi mình chạy lên không thể insert vào CSDL được.
Mình tạo một CSDL tên CSDL có một bảng Bangchitietbienban(masochitietbienban(int),bengiao(nvarchar),bennhan(nvarchar),chucvubengiao(nvarchar),chucvubennhan(nvarchar),lydo(nvarchar),tenhanghoa(nvarchar),donvi(nvarchar),soluong(int),serial(nvarchar),ghichu(nvarchar),ngaylapbienban(date))

Mình viết theo cấu trúc Class chứ không viết trực tiếp lên form. Đây là một hàm trong class.

  1. Public Function luu(ByVal masochitietbienban As Integer, ByVal bengiao As String, ByVal bennhan As String, ByVal chucvubengiao As String, ByVal chucvubennhan As String, ByVal lydo As String, ByVal tenhanghoa As String, ByVal donvi As String, ByVal soluong As Integer, ByVal serial As String, ByVal ghichu As String, ByVal ngaylapbienban As Date) As Boolean
  2.         Dim strSql As String = "INSERT INTO Bangchitietbienban VALUES('" + bengiao + "','" + bennhan + "','" + chucvubengiao + "','" + chucvubennhan + "','" + lydo + "','" + tenhanghoa + "','" + donvi + "','" & soluong & "','" + serial + "','" + ghichu + "','" & ngaylapbienban & "';"
  3.         If capnhat(strSql, database.strconn) = True Then
  4.             Return True
  5.         Else
  6.             Return False
  7.         End If
  8.     End Function
  9.    


Đây là code mình viết trong btnthem

  1. Dim masochitietbienban As Integer = Val(txtmaso.Text)
  2.         Dim bengiao As String = cbbenbangiao.Text
  3.         Dim bennhan As String = cbbennhan.Text
  4.         Dim chucvubengiao As String = cbchucvubenbangiao.Text
  5.         Dim chucvubennhan As String = cbchucvubennhan.Text
  6.         Dim lydo As String = txtlydo.Text
  7.         Dim tenhanghoa As String = txttenhanghoathietbi.Text
  8.         Dim donvi As String = cbdonvitinhthietbi.Text
  9.         Dim soluong As Integer = Val(txtsoluonghanghoathietbi.Text)
  10.         Dim serial As String = txtserial.Text
  11.         Dim ghichu As String = txtghichu.Text
  12.         Dim ngaylapbienban As Date = dtngaylapbienban.Value
  13.         If clctbb.luu(masochitietbienban, bengiao, bennhan, chucvubengiao, chucvubennhan, lydo, donvi, soluong, serial, ghichu, ngaylapbienban) = True Then
  14.             clctbb.hienthi(luoichitietbienbanbangiao)
  15.             MsgBox("Cập nhật biên bản bàn giao hàng hóa thiết bị thành công!", MsgBoxStyle.Information)
  16.         ElseIf clctbb.Sua(masochitietbienban, bengiao, bennhan, chucvubengiao, chucvubennhan, lydo, donvi, soluong, serial, ghichu, ngaylapbienban) Then
  17.             clctbb.hienthi(luoichitietbienbanbangiao)
  18.             MsgBox("Xóa biên bản bàn hàng hóa thiết bị thành công")
  19.         Else
  20.             MsgBox("Cập nhật biên bản bàn giao hàng hóa thiết bị thất bại")
  21.         End If


Nhưng khi mình nhập xong mình bấm lưu nó báo lưu thất bại.... :(( :(( :(( :(( :((

Cả nhà ai rành giúp mình xem mình vướng chổ nào nhé. thanks nhiều =D> =D> =D> =D>
Last edited by minhhath on Mon 01/06/2015 8:54 am, edited 1 time in total.
Trên đời này không có con đường cùng,mà chỉ có những ranh giới,điều quan trọng là có đủ sức mạnh và nghị lực để vượt qua những ranh giới đó hay không
User avatar
nhatlinh0207
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 428
Joined: Wed 15/08/2012 7:54 pm
Has thanked: 58 times
Been thanked: 49 times

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by nhatlinh0207 »

Hoa hết cả mắt, bạn để trong thẻ code VB.NET đi nhìn cho dễ
với cả bạn tạo ra hẳn 1 cài Funtion chỉ để thêm 1 bảng thôi không thấy bất tiện à?
sao ko tạo ra 1 Funtion mà nhận chuối SQL rồi sử lý. chứ làm như bạn mình cảm thấy dài mà hoa hết cả mắt @@
với cả bạn cần j phải
  1. Dim bengiao As String = cbbenbangiao.Text

sao bạn không dùng trực tiếp cbbenbangiao.Text luôn cho đỡ phải khai báo làm j @-)
User avatar
minhhath
Thành viên năng nổ
Thành viên năng nổ
Posts: 78
Joined: Sun 17/01/2010 3:24 pm
Location: p5,Tỉnh Cà Mau
Has thanked: 8 times
Contact:

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by minhhath »

Error 1 Argument not specified for parameter 'ngaylapbienban' of 'Public Function luu(masochitietbienban As Integer, bengiao As String, bennhan As String, chucvubengiao As String, chucvubennhan As String, lydo As String, tenhanghoa As String, donvi As String, soluong As Integer, serial As String, ghichu As String, ngaylapbienban As Date) As Boolean'.
Trên đời này không có con đường cùng,mà chỉ có những ranh giới,điều quan trọng là có đủ sức mạnh và nghị lực để vượt qua những ranh giới đó hay không
hvcuongit
Thành viên năng nổ
Thành viên năng nổ
Posts: 53
Joined: Sun 24/01/2010 6:09 pm
Has thanked: 1 time
Been thanked: 6 times

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by hvcuongit »

Có mấy điểm bạn cần lưu ý
Thứ 1: Câu SQL nên viết rõ ràng, rành mạch, ví dụ: INSERT INTO Bangchitietbienban(col1,col2) VALUES('col1_value','col2_value')
Thứ 2: Nếu giá trị cần Insert là kiểu int thì không có dấu nháy đơn (''): " & soluong & "
Thứ 3: Giá trị kiểu ngày chỉ cần format về kiểu string và đưa vào giá trị cần insert, ví dụ: Convert.ToDateTime(value_date).ToString("yyyy/MM/dd")
Thứ 4: Theo mình đoán field masochitietbienban là khóa chính của table, nhưng không thấy đưa vào giá trị cần insert(có thể bạn để Auto Increment) nên cần kiểm tra lại
Thứ 5: Cần sử dụng công cụ debug của VS để phát hiện bug chính xác
muaphonui_2010
Thành viên ưu tú
Thành viên ưu tú
Posts: 551
Joined: Fri 26/11/2010 1:15 pm
Location: TP.HCM
Has thanked: 190 times
Been thanked: 36 times
Contact:

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by muaphonui_2010 »

Chào bạn hvcuongit!
Bạn vui lòng chỉ giúp mình chổ này với, do mình chưa hiểu ý nghĩa của nó.
Thứ 2: Nếu giá trị cần Insert là kiểu int thì không có dấu nháy đơn (''): " & soluong & "
==> nếu : '" & soluong.text & "' thì kết quả thế nào và nếu " & soluong.text & " thì kết quả thế nào vậy bạn.
Vì trước giờ mình dùng '" & soluong.text & "' nhưng không hiểu hết ý nghĩa của nó, nhưng giờ thấy bạn nói ở trên nên mình để ý lại nên chưa hiểu.
VD: '" & 1234,56 & "' thì insert vào nó ẽ như thế nào và " &1234,56 & " thì insert vào nó như thế nào bạn nhỉ.
Mong bạn giúp mình hiểu rõ bản chất của nó
Cảm ơn bạn!
hvcuongit
Thành viên năng nổ
Thành viên năng nổ
Posts: 53
Joined: Sun 24/01/2010 6:09 pm
Has thanked: 1 time
Been thanked: 6 times

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by hvcuongit »

muaphonui_2010 wrote:Chào bạn hvcuongit!
Bạn vui lòng chỉ giúp mình chổ này với, do mình chưa hiểu ý nghĩa của nó.
Thứ 2: Nếu giá trị cần Insert là kiểu int thì không có dấu nháy đơn (''): " & soluong & "
==> nếu : '" & soluong.text & "' thì kết quả thế nào và nếu " & soluong.text & " thì kết quả thế nào vậy bạn.
Vì trước giờ mình dùng '" & soluong.text & "' nhưng không hiểu hết ý nghĩa của nó, nhưng giờ thấy bạn nói ở trên nên mình để ý lại nên chưa hiểu.
VD: '" & 1234,56 & "' thì insert vào nó ẽ như thế nào và " &1234,56 & " thì insert vào nó như thế nào bạn nhỉ.
Mong bạn giúp mình hiểu rõ bản chất của nó
Cảm ơn bạn!
Trường hợp không có dấu nháy '', câu Insert sẽ như thế này: [sql]Insert table(columnA) Values(1)[/sql]
Trường hợp có dâu nháy '', thì câu insert sẽ thành: [sql]Insert table(columnA) Values('1')[/sql]
Trong SQL thì giá trị '1' (có dấu nháy) là kiểu string, còn 1 (không có dấu '') là kiểu int
Hiện nay một số ngôn ngữ SQL nó có thể tự hiểu là kiểu Int nếu có dấu nháy, nhưng một số ngôn ngữ như Access thì vẫn phải yêu cầu đúng định dạng, nên cần phải lưu ý vấn đề này.
User avatar
minhhath
Thành viên năng nổ
Thành viên năng nổ
Posts: 78
Joined: Sun 17/01/2010 3:24 pm
Location: p5,Tỉnh Cà Mau
Has thanked: 8 times
Contact:

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by minhhath »

Mình đã lưu được nhưng nó không hiển thị lên Datadrivew được. mình không hiểu bị gì luôn
Trên đời này không có con đường cùng,mà chỉ có những ranh giới,điều quan trọng là có đủ sức mạnh và nghị lực để vượt qua những ranh giới đó hay không
User avatar
nhatlinh0207
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 428
Joined: Wed 15/08/2012 7:54 pm
Has thanked: 58 times
Been thanked: 49 times

Re: Lỗi không insert vào CSDL được viết bằng visual basic.net

Post by nhatlinh0207 »

Lưu được và hiển thị được trên datagridview hay không không liên quan nhiều đến nhau. Bạn xem cái hiển thị của bạn chuẩn chưa. Và khuyên bạn đừng làm cả 1 cái function chỉ để thêm được 1 bảng
Post Reply

Return to “Visual Basic .NET và C# (VB.NET & C#)”