Ola pessoal,
Sou novo nessa area e estou aprendendo as coisas basicas em CRUD no VB, porem me deparei com uma situacao que não consigo resolver, ao inserir um cadastro o gridview atualiza em tempo real, mas ao atualizar um cadastro o gridview repete as informacoes apenas modificando a linha em questao, ou seja, duplica os dados.
Segue meu codigo.
obg
Imports MySql.Data.MySqlClient
Public Class cadastro_empresas
Dim con As New MySqlConnection("#####################")
Dim cmd As New MySqlCommand
Dim adapt As New MySqlDataAdapter
Dim dt As New DataTable()
'SELECT BANCO E INSERE OS DADOS NO DATAGRID
Sub carrega_dados()
Dim query As String = "select * from empresas"
Dim adapt As New MySqlDataAdapter(query, con)
Dim ds As New DataSet()
Try
con.Open()
adapt.Fill(dt)
For Each row In dt.Rows
Populate(row(0), row(1), row(2), row(3), row(4), row(5), row(6))
Next
con.Close()
clearTxt()
DataGridView1.Refresh()
Catch ex As Exception
MsgBox(ex.Message)
con.Close()
End Try
con.Close()
End Sub
'CONSTROI POPULAR DATAGRID
Private Sub Populate(id As String, nome As String, endereco As String, cidade As String, telefone As String, celular As String, contato As String)
Dim row As String() = New String() {id, nome, endereco, cidade, telefone, celular, contato}
DataGridView1.Rows.Add(row)
End Sub
'CADASTRAR INFORMAÇÕES
Private Sub insert()
Dim cadastra As String = "INSERT INTO empresas(nome, endereco, cidade, telefone, celular, contato) VALUES (@nome, @endereco, @cidade, @telefone, @celular, @contato)"
cmd = New MySqlCommand(cadastra, con)
cmd.Parameters.AddWithValue("@nome", nometxt.Text)
cmd.Parameters.AddWithValue("@endereco", enderecotxt.Text)
cmd.Parameters.AddWithValue("@cidade", cidadetxt.Text)
cmd.Parameters.AddWithValue("@telefone", telefonetxt.Text)
cmd.Parameters.AddWithValue("@celular", celulartxt.Text)
cmd.Parameters.AddWithValue("@contato", contatotxt.Text)
Try
con.Open()
If cmd.ExecuteNonQuery() > 0 Then
MsgBox("Cadastrado")
clearTxt()
carrega_dados()
End If
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
con.Close()
End Try
End Sub
'LIMPA CAMPOS FORMULARIO
Private Sub clearTxt()
nometxt.Text = ""
enderecotxt.Text = ""
cidadetxt.Text = ""
telefonetxt.Text = ""
celulartxt.Text = ""
contatotxt.Text = ""
End Sub
'CONSTRUÇÃO DATAGRID, CARREGA OS DADOS E EXIBE USUARIO LOGADO
Private Sub cadastro_empresas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.ColumnCount = 7
DataGridView1.Columns(0).Name = "id"
DataGridView1.Columns(1).Name = "nome"
DataGridView1.Columns(2).Name = "endereco"
DataGridView1.Columns(3).Name = "cidade"
DataGridView1.Columns(4).Name = "telefone"
DataGridView1.Columns(5).Name = "celular"
DataGridView1.Columns(6).Name = "contato"
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
carrega_dados()
sessao.Text = My.Forms.login.txtlogin.Text
End Sub
'EVENTO BOTAO CADASTRA
Private Sub cadastraEmpresa_Click(sender As Object, e As EventArgs) Handles cadastraEmpresa.Click
insert()
End Sub
'SCRIPT ATUALIZAÇÃO DE REGISTRO
Private Sub atualizar(id As String)
Dim sql As String = "UPDATE empresas SET nome='" + nometxt.Text + "',endereco='" + enderecotxt.Text + "',cidade='" + cidadetxt.Text + "',telefone='" + telefonetxt.Text + "',celular='" + celulartxt.Text + "',contato='" + contatotxt.Text + "' WHERE id='" + id + "'"
Try
con.Open()
adapt.UpdateCommand = con.CreateCommand()
adapt.UpdateCommand.CommandText = sql
If adapt.UpdateCommand.ExecuteNonQuery() > 0 Then
MsgBox("Registro atualizado com sucesso.")
clearTxt()
carrega_dados()
End If
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
con.Close()
End Try
End Sub
'POPULAR TEXTBOX AO CLICAR NO DATAGRID
Private Sub DataGridView1_MouseClick(sender As Object, e As MouseEventArgs) Handles DataGridView1.MouseClick
Dim nome As String = DataGridView1.SelectedRows(0).Cells(1).Value
Dim endereco As String = DataGridView1.SelectedRows(0).Cells(2).Value
Dim cidade As String = DataGridView1.SelectedRows(0).Cells(3).Value
Dim telefone As String = DataGridView1.SelectedRows(0).Cells(4).Value
Dim celular As String = DataGridView1.SelectedRows(0).Cells(5).Value
Dim contato As String = DataGridView1.SelectedRows(0).Cells(6).Value
nometxt.Text = nome
enderecotxt.Text = endereco
cidadetxt.Text = cidade
telefonetxt.Text = telefone
celulartxt.Text = celular
contatotxt.Text = contato
End Sub
Private Sub btnAtualizar_Click(sender As Object, e As EventArgs) Handles btnAtualizar.Click
Dim id As String = DataGridView1.SelectedRows(0).Cells(0).Value
atualizar(id)
End Sub
End Class