VB.NET UPDATE NA TABELA BOTAO ALTERAR
Bom dia Pessoal,
Estou precisando de um ajuda!
Criei o Botão ALTERAR no meu projeto e associei o comando abaixo:
Private Sub btnAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAlterar.Click
Connection()
SQL = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & mskData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD = [ô][Ô] & txtCod.Text & [Ô][ô][Ô]
ExecultaSQL()
Try
cnn.Open()
cmd.ExecuteNonQuery()
MsgBox([Ô]Registro alterado com sucesso![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Catch ex As Exception
MsgBox([Ô]Erro na alteração do Registro![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
cnn.Close()
End Try
Carregadatagrid()
CarregaSaldo()
LimpaCampos()
End Sub
Não está atualizando as informações que alterei, Banco de Dados Access.
Por favor alguém poderia me ajudar.
Estou precisando de um ajuda!
Criei o Botão ALTERAR no meu projeto e associei o comando abaixo:
Private Sub btnAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAlterar.Click
Connection()
SQL = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & mskData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD = [ô][Ô] & txtCod.Text & [Ô][ô][Ô]
ExecultaSQL()
Try
cnn.Open()
cmd.ExecuteNonQuery()
MsgBox([Ô]Registro alterado com sucesso![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Catch ex As Exception
MsgBox([Ô]Erro na alteração do Registro![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
cnn.Close()
End Try
Carregadatagrid()
CarregaSaldo()
LimpaCampos()
End Sub
Não está atualizando as informações que alterei, Banco de Dados Access.
Por favor alguém poderia me ajudar.
Bom, na primeira analise, reparei o seguinte, no campo [Ô]txtCod[Ô] está o código 17 e no grid não tem nenhum código 17, ou seja, não vai acontecer nada, pois não existe o registro 17.
Outra coisa, eu indico a usar Parâmetros nas SQL que fica bem melhor, sem falar em outros detalhes como SQL INJECTION.
Poste também o código da função ExecultaSQL()
Outra coisa, eu indico a usar Parâmetros nas SQL que fica bem melhor, sem falar em outros detalhes como SQL INJECTION.
Poste também o código da função ExecultaSQL()
Segue abaixo as Sub que criei:
Public Sub CarregaCodigo()
Dim SQL As New OleDbCommand([Ô]SELECT MAX(COD)+1 FROM TB_ENTRADA[Ô], cnn)
Dim C As Integer
cnn.Open()
C = SQL.ExecuteScalar
txtCod.Text = C
cnn.Close()
End Sub
Public Sub Carregadatagrid()
Connection()
Dim da As New OleDbDataAdapter([Ô]SELECT * FROM TB_ENTRADA[Ô], cnn)
Dim dt As New DataTable
da.Fill(dt)
dgvEntrada.DataSource = dt
da.Dispose()
cnn.Close()
End Sub
Public Sub Connection()
strcnn = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Rabelo\Desktop\Igreja\Igreja\Igreja.mdb[Ô]
cnn = New OleDbConnection(strcnn)
End Sub
Public Sub ExecultaSQL()
cmd = New OleDbCommand(SQL, cnn)
End Sub
O Código 17 é a rotina CarregaCodigo()
Public Sub CarregaCodigo()
Dim SQL As New OleDbCommand([Ô]SELECT MAX(COD)+1 FROM TB_ENTRADA[Ô], cnn)
Dim C As Integer
cnn.Open()
C = SQL.ExecuteScalar
txtCod.Text = C
cnn.Close()
End Sub
Public Sub Carregadatagrid()
Connection()
Dim da As New OleDbDataAdapter([Ô]SELECT * FROM TB_ENTRADA[Ô], cnn)
Dim dt As New DataTable
da.Fill(dt)
dgvEntrada.DataSource = dt
da.Dispose()
cnn.Close()
End Sub
Public Sub Connection()
strcnn = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Rabelo\Desktop\Igreja\Igreja\Igreja.mdb[Ô]
cnn = New OleDbConnection(strcnn)
End Sub
Public Sub ExecultaSQL()
cmd = New OleDbCommand(SQL, cnn)
End Sub
O Código 17 é a rotina CarregaCodigo()
Já tentei de tudo e nada!!!
Alguém poderia me ajudar, por favor!
Alguém poderia me ajudar, por favor!
Tente assim:
Seu código tem muita coisa a ser melhorada, ok?, pesquise depois sobre como trabalhar com parâmetros nas SQL[ô]s que é a forma correta de se trabalhar.
cnn.Open()
SQL = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & mskData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD = [ô][Ô] & txtCod.Text & [Ô][ô][Ô]
Try
cnn.Open()
cmd = New OleDbCommand(SQL, cnn)
cmd.ExecuteNonQuery()
MsgBox([Ô]Registro alterado com sucesso![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Catch ex As Exception
MsgBox([Ô]Erro na alteração do Registro![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
cnn.Close()
End Try
Seu código tem muita coisa a ser melhorada, ok?, pesquise depois sobre como trabalhar com parâmetros nas SQL[ô]s que é a forma correta de se trabalhar.
Altair,tudo bem.Mas eu prefiro responder da forma literal.
Quanto a este:SQL = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & mskData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD =[txt-color=#e80000] [ô][Ô] & txtCod.Text & [Ô][ô][Ô][/txt-color].
Isto não funciona porque é Igreja.MDB.
Seria.
Private Sub btnAlterar_Click(sender As System.Object, e As System.EventArgs) Handles btnAlterar.Click
Connection()
Sql = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & txtData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD = [txt-color=#007100][Ô] & txtCod.Text & [Ô][Ô][/txt-color]
ExecultaSQL()
Try
Cnn.Open()
cmd.ExecuteNonQuery()
MsgBox([Ô]Registro alterado com sucesso![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Catch ex As Exception
MsgBox([Ô]Erro na alteração do Registro![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Cnn.Close()
End Try
Carregadatagrid()
End Sub
Você esqueceu, Cod é número no Access.Ele não aceita [ô][Ô] & txtCod & [Ô][ô].
Não acredito que o campo da tabela dele é de Texto,se for eu ERREI.
Eu nunca fui muito de usar parâmetros porque só faço para mim,vou mudar de idéia e passar a usar parâmetros.
Valeu.
Quanto a este:SQL = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & mskData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD =[txt-color=#e80000] [ô][Ô] & txtCod.Text & [Ô][ô][Ô][/txt-color].
Isto não funciona porque é Igreja.MDB.
Seria.
Private Sub btnAlterar_Click(sender As System.Object, e As System.EventArgs) Handles btnAlterar.Click
Connection()
Sql = [Ô]UPDATE TB_ENTRADA SET DATA = [ô][Ô] & txtData.Text & [Ô][ô],VALOR = [ô][Ô] & txtValEntrada.Text & [Ô][ô],HISTORICO = [ô][Ô] & txtHistorico.Text & [Ô][ô] WHERE COD = [txt-color=#007100][Ô] & txtCod.Text & [Ô][Ô][/txt-color]
ExecultaSQL()
Try
Cnn.Open()
cmd.ExecuteNonQuery()
MsgBox([Ô]Registro alterado com sucesso![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Catch ex As Exception
MsgBox([Ô]Erro na alteração do Registro![Ô], MsgBoxStyle.Information, [Ô]Controle de Balancete[Ô])
Cnn.Close()
End Try
Carregadatagrid()
End Sub
Você esqueceu, Cod é número no Access.Ele não aceita [ô][Ô] & txtCod & [Ô][ô].
Não acredito que o campo da tabela dele é de Texto,se for eu ERREI.
Eu nunca fui muito de usar parâmetros porque só faço para mim,vou mudar de idéia e passar a usar parâmetros.
Valeu.
Pessoal olha como ficou o SQL gerado do projeto, testei direto no Access.
Consegui desse forma :
UPDATE TB_ENTRADA SET DATA = [ô]01/11/2012[ô],VALOR = [ô]R$ 5,00[ô],HISTORICO = [ô]COL[ô] WHERE COD = 2
Obrigado a todos ! ! !
UPDATE TB_ENTRADA SET DATA = [ô]01/11/2012[ô],VALOR = [ô]R$ 5,00[ô],HISTORICO = [ô]COL[ô] WHERE COD = 2
Obrigado a todos ! ! !
Tópico encerrado , respostas não são mais permitidas