30/09/2018, 17:50
VB.NET không gọi được hàm khi click vào button
Đoạn button thêm_click không thể gọi dt
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'start connect sql'
Dim con As SqlConnection
Dim str As String = "Data Source=(local);Initial Catalog=test;Integrated Security=True"
con = New SqlConnection(str)
con.Open() 'end'
'Các thao tác với Sql'
Dim command As New SqlCommand()
Dim dt As New DataTable("KH") 'Tạo một đối tượng Datatable nhận dữ liệu trả về
Dim da As New SqlDataAdapter() 'Tạo bộ máy DataAdapter thực hiện command
command.Connection = con ' Kết nối
command.CommandType = CommandType.Text 'loại lệnh sử dụng là Text hay là một query trong access
command.CommandText = "Select * From KH"
da.SelectCommand = command ' gán command cho da
da.Fill(dt) 'Nạp dữ liệu vào Table
GridControl1.DataSource = dt 'Load dữ liệu lên DataGridview ------end
'Lấy dữ liệu từ table vào txt
txtmakh.DataBindings.Add("Text", dt, "Mã KH") ' Ở đây ta cần binding textbox txtmakh với giá trị Text ở cột STT của Table
txtho.DataBindings.Add("Text", dt, "Họ KH")
txtten.DataBindings.Add("Text", dt, "Tên KH")
txtsdt.DataBindings.Add("Text", dt, "SĐT")
txtdiachi.DataBindings.Add("Text", dt, "Địa Chỉ")
End Sub
Private Sub btnthem_Click(sender As Object, e As EventArgs) Handles btnthem.Click
Dim row As DataRow = dt.NewRow()
row("Mã KH") = txtmakh.Text
row("Họ KH") = txtho.Text
row("Tên KH") = txtten.Text
row("SĐT") = txtsdt.Text
row("Địa Chỉ") = txtdiachi.Text
dt.Rows.Add(row)
GridControl1.DataSource = dt
Dim commandInsert As New SqlCommand()
commandInsert.Connection = con
commandInsert.CommandType = CommandType.Text
commandInsert.CommandText = "Insert Into KH Values (@Mã KH,@Họ KH,@Tên KH,@SĐT,@Địa Chỉ)"
commandInsert.Parameters.Add("@Mã KH", SqlDbType.Int, "Mã KH")
commandInsert.Parameters.Add("@Tên KH", SqlDbType.NVarChar, "Tên KH")
commandInsert.Parameters.Add("@Họ KH", SqlDbType.NVarChar, "Họ KH")
commandInsert.Parameters.Add("@SĐT", SqlDbType.NVarChar, "SĐT")
commandInsert.Parameters.Add("@Địa Chỉ", SqlDbType.NVarChar, "Địa Chỉ")
da.InsertCommand = commandInsert
da.Update(dt)
End Sub
Private Sub btnxoa_Click(sender As Object, e As EventArgs) Handles btnxoa.Click
End Sub
End Class
Bài liên quan
có hiện thỉ thông báo lỗi gì không bạn ?
Mình làm được rồi sẵn chia sẽ cho các bạn muốn tìm hiểu luôn, đem các hàm sau ra ngoài viết phia trên Form_Load, đây là chương trình quản lý, quản lý gì cũng được, kết nối tới CSDL
Dim con As SqlConnection
Dim dt As New DataTable()
Dim da As New SqlDataAdapter()
Em nên suy nghĩ về 3 lớp nhé. Code như thế này chưa ổn lắm đâu.
Đầu tiên là module kết nối, không sao, em làm cách này tốt.
Thứ 2 là lớp Business Logic Layer em nên suy nghĩ thêm về đối tượng.
Tạo lớp đối tượng
Cách 1:
Bảng KH chính là một class
Public Class KHClass
Private _MaKH As String
'Tạo thuộc tính mã KH thuộc bảng KH
Public Property MaKH() As String
Get
Return _MaKH
End Get
Set(ByVal value As String)
_MaKH = value
End Set
End Property
…
End Plass
Cách 2 : Bảng KH là 1 structure (1 class thu nhỏ)
Public structure KHStruct
public MaKH as string
End structure
Tạo hàm cho đối tượng (sự kiện, nếu có).
Ví dụ: Hàm insert vào CSDL
Public KH_Insert(_KH as KH) as boolean
Dim cmd as new sqlcommand
Dim SQL as string
KH_Insert = false
try
’ Xây dựng hàm clear CSDL trước
’ Tức có thể có những column not null thì mặc định giá trị space (Chuối) hoặc giá trị 0 (Số)
’ Nên xây dựng hàm xem để coi thử giá trị Mã KH đã tạo hay chưa. Nếu tạo rồi thì chuyển sang update chứ không ‘insert … – có rất nhiều trường hợp. Anh chỉ ví dụ để em tư duy hệ thống
SQL = “Insert into … value as”
SQl = SQl + "(’"+KH.MaKH+"’,…)
cmd = new sqlcommand(SQL,cn)
cmd.ExecuteNonQuery() ’ ở đây ngắn gọn, em có thể xây dựng commit or rollback nếu sai trong quá trình làm
KH_Insert = True
Catch ex as Exception
End try
End Public
Sẽ nói sau nếu em hiểu ý anh.
P/s: Code anh gõ tay, em check syntax nhé.
Cám ơn anh, hiện tại e chưa có khả năng viết 3 lớp, anh có nguồn tài liệu vb.net nào không cho e xin tham khảo với
Hiện tại mình cần tìm dữ liệu trên gridview thông qua textbox, bạn hd dùm mình đc không, xin cám ơn nhiều
Mình viết dự án nhiều ( 1 vài dự án ERP lớn) nên mình chính là nguồn tài liệu về VB.NET.
Bạn có thời gian thì có thể gặp mình chủ nhật tại Tân Phú.
Mình sẽ hướng dẫn cho bạn cũng như chia sẻ kinh nghiệm.
Mình cũng ở Tân Phú, đường Nguyễn Văn Yến, không biết bạn ở đâu, mình mới chập chững code những ngày đầu thôi, còn kém lắm, đi làm rồi mà còn vậy đó, sếp cho thời gian trao dồi thêm