30/09/2018, 17:55

Lỗi không thể thêm ngày giờ vào CSDL thông qua Datetimepicker trong VB.NET?

Chào các bạn,

Mình đang viết chương trình bằng quản lý khách hàng VB.Net, mình gặp một vấn đề như thế này, thêm dữ liệu vào CSDL thông qua Textbox và thêm Ngày Sinh thông qua DateEdit, mình sử dụng DateEdit tích hợp vào Visual của DevExpress chứ không phải Datetimepicker, cũng giống nhau cả thôi, do yêu cầu cấp trên

//Hàm kiểm tra trùng ID
    Public Function checkID(ByVal ID As String) As String
            Dim sqlCom As New SqlCommand("Select Count(MaKH) From [TTKH] Where MaKH='" & ID & "' ", con)
            Dim count As String = Convert.ToString(sqlCom.ExecuteScalar())
            Return count
        End Function
    
    
        Private Sub btnthem_Click(sender As Object, e As EventArgs) Handles btnthem.Click
            If (checkID(txtmakh.Text) > 0) Then
                MessageBox.Show("Mã khách hàng đã tồn tại!")
            ElseIf txtmakh.Text = "" Then
                MessageBox.Show("Chưa nhập mã khách hàng")
            Else
                Try
                    Dim row As DataRow = dt.NewRow()
                    row("MaKH") = txtmakh.Text
                    row("HoVaTen") = txthovaten.Text
                    row("CMND") = txtcmnd.Text
                    row("NgaySinh") = DateEdit1.DateTime
                    row("DiaChi") = txtdiachi.Text
                    row("DienThoai") = txtdienthoai.Text
                    row("Email") = txtemail.Text
                    row("Password") = txtpassword.Text
    
                    dt.Rows.Add(row)
                    GridControl1.DataSource = dt
                    Dim commandInsert As New SqlCommand()
                    commandInsert.Connection = con
                    commandInsert.CommandType = CommandType.Text
                    commandInsert.CommandText = "Insert Into TTKH Values (@MaKH,@HoVaTen,@CMND,@NgaySinh,@DiaChi,@DienThoai,@Email,@Password)"
    
                    commandInsert.Parameters.Add("@MaKH", SqlDbType.NVarChar, 15, "MaKH")
                    commandInsert.Parameters.Add("@HoVaTen", SqlDbType.NVarChar, 50, "HoVaTen")
                    commandInsert.Parameters.Add("@CMND", SqlDbType.NVarChar, 12, "CMND")
                    commandInsert.Parameters.Add("@NgaySinh", SqlDbType.DateTime).Value = "NgaySinh"
                    commandInsert.Parameters.Add("@DiaChi", SqlDbType.NVarChar, 255, "DiaChi")
                    commandInsert.Parameters.Add("@DienThoai", SqlDbType.NVarChar, 20, "DienThoai")
                    commandInsert.Parameters.Add("@Email", SqlDbType.NVarChar, 50, "Email")
                    commandInsert.Parameters.Add("@Password", SqlDbType.NVarChar, 20, "Password")
                    da.InsertCommand = commandInsert
                    da.Update(dt)
                    MessageBox.Show("Lưu thành công")
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            End If
    
        End Sub,

Khi chạy thông báo lỗi failed to convert parameter value from a string to a datetime

vũ xuân quân viết 20:10 ngày 30/09/2018

parameter NgaySinh là kiểu string.
@NgaySinh trong database kiểu Datetime
nên không insert được.
Em dùng google tìm theo cụm từ “vb.net convert string to date”

Phát Nguyên viết 20:02 ngày 30/09/2018

Cám ơn anh nhưng mà gấp lăm rồi, anh hướng dẫn dùm em luôn được không, chút xíu nữa phải nộp, còn nhiều vấn đề cần giải quyết lắm

vũ xuân quân viết 20:11 ngày 30/09/2018

Dim value As String = “2000-02-02”
Dim time As DateTime = DateTime.Parse(value)

Phát Nguyên viết 20:03 ngày 30/09/2018

cám ơn anh, nhưng anh hướng dẫn chính xác câu lệnh dùm e luôn, chèn vào chỗ nào để giải quyết triệt để bài trên

vũ xuân quân viết 19:57 ngày 30/09/2018
Dim time As DateTime = DateTime.Parse(DateEdit1.DateTime)
row("NgaySinh") = time
Khánh Hưng Nguyễn viết 20:05 ngày 30/09/2018

Viết 3 lớp thế này thì sau này sửa lỗi phải cả 100 lần bạn ơi. Hic.
Thôi chủ nhật tuần này có rãnh rỗi thì cafe nhé, mình nhìn thấy vậy buồn quá không nói luôn.

Phát Nguyên viết 20:11 ngày 30/09/2018

Cho mình cái chỗ hẹn đi, chứ căn bản mình k biết 3 lớp là gì rồi, đi làm áp lực lắm

vũ xuân quân viết 19:57 ngày 30/09/2018

đi làm áp lực lắm

đi làm thì phải áp lực rồi. Không biết cái gì thì lên mạng tìm và hỏi mọi người. Đừng dấu dốt, dấu dốt là suốt đời kiến thức không lên được.
Nếu biết mình dở cái gì thì tự nghiên cứu những cái mình yếu đi. Chả ai ngồi không giúp cho em cả.

Phát Nguyên viết 20:05 ngày 30/09/2018

bi lỗi conversion from string to type ‘integer’ is not valid khi chèn vào

vũ xuân quân viết 20:11 ngày 30/09/2018

anh mới nhờ bạn anh coi code của em. Bạn anh nói em code sai chỗ này

commandInsert.Parameters.Add("@NgaySinh", SqlDbType.DateTime).Value = “NgaySinh”

chỗ này sai vì em không gắn giá trị mà gắn 1 chuỗi “NgaySinh”. Nên mới văng ra lỗi này.

failed to convert parameter value from a string to a datetime

anh thì hiểu sai vấn đề nên đưa cách giải quyết sai. :(.

Sửa đúng thì phải như thế này:

Dim theDate As String = DateEdit1.Value.ToString("dd/MM/yyyy");
commandInsert.Parameters.Add("@NgaySinh", SqlDbType.DateTime).Value = theDate ;

khúc code này không đúng, em bỏ nha

Dim time As DateTime = DateTime.Parse(DateEdit1.DateTime)
row("NgaySinh") = time

p/s: mai mốt em hỏi thì ghi tag cụ thể là làm ngôn ngữ nào, làm web hay làm winform. Anh cứ nghĩ em làm web.

Phát Nguyên viết 19:58 ngày 30/09/2018

Làm đc rồi thank, nhưng mà khi show lên Date edit nó có dạng đ/mm/yyyy 12:0:0 AM lamd sao cắt bỏ đuocẹ đây

vũ xuân quân viết 20:09 ngày 30/09/2018

DateEdit1.Value.ToString(“dd/MM/yyyy”);

dùng cái này vào chỗ show là ok

Phát Nguyên viết 19:55 ngày 30/09/2018

Mình muốn tiềm kiếm thông qua txtsearch phai làm sao
mình có 1 procedure trong sql thế này

create proc timkiem
@HoVaTen nvarchar(50)
as
begin
select * from TTKH where TTKH.HoVaTen like '%' + @HoVaTen + '%'
end
Phát Nguyên viết 20:01 ngày 30/09/2018

Hồi trưa sửa được cái lỗi to string type interger rồi thoát ra k lưu lại giờ bị nữa không biết đường sửa tiếp

Phát Nguyên viết 20:05 ngày 30/09/2018

Lại được rồi, khỗ quá ^^

Bài liên quan
0