VB.NET UPDATE NA TABELA BOTAO ALTERAR

JRABELO 01/11/2012 02:18:37
#413324
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.



ALTAIR148 01/11/2012 07:19:45
#413325
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()

JRABELO 01/11/2012 11:47:47
#413359
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()
JRABELO 01/11/2012 22:24:29
#413417
Já tentei de tudo e nada!!!

Alguém poderia me ajudar, por favor!
ALTAIR148 02/11/2012 09:35:03
#413421
Tente assim:

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.
OMAR2011 02/11/2012 09:57:30
#413423
Resposta escolhida
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.
JRABELO 02/11/2012 12:34:36
#413431
Pessoal olha como ficou o SQL gerado do projeto, testei direto no Access.
JRABELO 02/11/2012 13:45:28
#413433
Consegui desse forma :

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