Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leonardoelias300

Banco de Dados não atualiza

Recommended Posts

Estou com o seguinte problema... tenho uma janela de registro de entrada/saída com um banco de dados que contem 3 tabelas... 1 tabela é para consulta e as outras são para registro.

Ao clicar no botão salvar, a tabela de consulta atualiza normalmente, mas as tabelas de registro (que recebem novos itens automaticamente) não atualizam o banco de dados (Access).

Lembrando que as tabelas de registro recebem os valores dos textboxs automaticamente. não existe interação do usuario com os textboxs que gravam os registros que nao estao sendo atualizados.

 

Eis o código:

Private Sub btnFinalizaES_Click(sender As Object, e As EventArgs) Handles btnFinalizaES.Click
         'verifica se foi digitado numero na entrada ou saida
        If txtEntrou.Text <> "" Or txtSaiu.Text <> "" Then
            Dim valor1, valor2, valor3 As Decimal
            valor1 = 0
            valor2 = 0
            valor3 = 0
            If txtEntrou.Text <> "" Then valor1 = CDbl(txtEntrou.Text)
            If txtSaiu.Text <> "" Then valor2 = CDbl(txtSaiu.Text)
            If txtQuantidadeAtual.Text <> "" Then valor3 = CDbl(txtQuantidadeAtual.Text)
            ' calcula o quanto restou
            valor3 = valor3 + valor1 - valor2
            If valor3 > 0 Then txtQuantidadeAtual.Text = valor3
            If valor3 = 0 Or valor3 < 1 Then txtQuantidadeAtual.Text = 0
            If txtSaiu.Text <> "" Then     'se saiu registra saida
                Me.RegistrossaidaBindingSource.AddNew()
                txtdescriSaida.Text = txtProcuraDescri.Text
                txtquantidadesaida.Text = txtSaiu.Text
                txtdatahorasaida.Text = Date.Today + "  " + DateAndTime.TimeOfDay
                txttiposaida.Text = "SAIDA PELO ESTOQUE"
                If txtProcuraCod.Text <> "" Then txtbarrassaida.Text = txtProcuraCod.Text
                If trocou.CheckState = CheckState.Checked Then txtobssaida.Text = "TROCA"
            End If
            If txtEntrou.Text <> "" Then    'se entrou registra entrada
                Me.RegistroentradaBindingSource.AddNew()
                txtdescrientrada.Text = txtProcuraDescri.Text
                txtquantidadeentrada.Text = txtEntrou.Text
                txtdatahoraentrada.Text = Date.Today + "  " + DateAndTime.TimeOfDay
                txttipodeentrada.Text = "ENTRADA PELO ESTOQUE"
                If txtProcuraCod.Text <> "" Then txtbarrasentrada.Text = txtProcuraCod.Text
                If trocou.CheckState = CheckState.Checked Then txtobsentrada.Text = "TROCA"
                If txtFornecedorES.Text <> "" Then txtfornecedorentrada.Text = txtFornecedorES.Text
            End If
            If txtSaiu.Text <> "" Then Me.RegistrossaidaBindingSource.EndEdit()
            If txtEntrou.Text <> "" Then Me.RegistroentradaBindingSource.EndEdit()
            'grava as alteraçoes
            Me.Validate()
            Me.ListaprodutosBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.BancodedadosDataSet)
            txtSaiu.Text = ""
            txtEntrou.Text = ""
            MsgBox("Registrado!")
        Else
            MsgBox("Digite a entrada ou saida antes de registrar!")
        End If
End Sub

Obs.: desculpa a bagunça do codigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudei a posição dos códigos e continua a mesma coisa... ele atualiza a tabela ListaprodutosBindingSource mas nao adiciona os novos registros nas tabelas RegistroentradaBindingSource e RegistrossaidaBindingSource

Será que ele não considera os textbox que foram alterados automaticamente pelo código?

 

erroregistro.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, eu aconselho você usar o OleDbCommand ao invés de binding sources... Você pode ter um controle maior do código e também evita problemas deste tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo isso :yes:

Por preguiça eu estava fazendo as conexões com o banco de dados tudo pelo próprio visual studio... preguiça mesmo de escrever o código... mas essa vai ser a solução mesmo hehe...

Vlw ae pelo conselho... Vou remover as conexões padrão e criar novas conexões através do código mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim:

Private Sub btnFinalizaES_Click(sender As Object, e As EventArgs) Handles btnFinalizaES.Click
        If txtEntrou.Text <> "" Or txtSaiu.Text <> "" Then
            Dim valor1, valor2, valor3 As Decimal
            valor1 = 0
            valor2 = 0
            valor3 = 0
            If txtEntrou.Text <> "" Then valor1 = CDbl(txtEntrou.Text)
            If txtSaiu.Text <> "" Then valor2 = CDbl(txtSaiu.Text)
            If txtQuantidadeAtual.Text <> "" Then valor3 = CDbl(txtQuantidadeAtual.Text)
            valor3 = valor3 + valor1 - valor2
            If valor3 > 0 Then txtQuantidadeAtual.Text = valor3
            If valor3 = 0 Or valor3 < 1 Then txtQuantidadeAtual.Text = 0
            If txtSaiu.Text <> "" Then
                Using con As OleDbConnection = GetConnection()
                    Try
                        con.Open()
                        RegDataHora = Date.Today + "  " + DateAndTime.TimeOfDay
                        Dim obssaida As String = " "
                        If trocou.CheckState = CheckState.Checked Then obssaida = "TROCA"
                        Dim sql As String = "INSERT INTO registrossaida (descri,quantidade,datahora,tiposaida,barras,obs) VALUES ('" & txtProcuraDescri.Text & "','" & txtSaiu.Text & "','" & RegDataHora & "','SAIDA PELO ESTOQUE','" & txtProcuraCod.Text & "','" & obssaida & "')"
                        Dim GravarReg As New OleDbCommand(sql, con)
                        GravarReg.ExecuteNonQuery()
                    Catch ex As Exception
                    Finally
                        con.Close()
                    End Try
                End Using
            End If
            If txtEntrou.Text <> "" Then
                Using con As OleDbConnection = GetConnection()
                    Try
                        con.Open()
                        RegDataHora = Date.Today + "  " + DateAndTime.TimeOfDay
                        Dim obsentrada As String = " "
                        If trocou.CheckState = CheckState.Checked Then obsentrada = "TROCA"
                        Dim sql As String = "INSERT INTO registroentrada (descri,quantidade,fornecedor,datahora,tipoentrada,barras,obs) VALUES ('" & txtProcuraDescri.Text & "','" & txtEntrou.Text & "','" & txtFornecedorES.Text & "','" & RegDataHora & "','ENTRADA PELO ESTOQUE','" & txtProcuraCod.Text & "','" & obsentrada & "')"
                        Dim GravarReg As New OleDbCommand(sql, con)
                        GravarReg.ExecuteNonQuery()
                    Catch ex As Exception
                    Finally
                        con.Close()
                    End Try
                End Using
            End If
            txtSaiu.Text = ""
            txtEntrou.Text = ""
            Me.Validate()
            Me.ListaprodutosBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.BancodedadosDataSet)
            MsgBox("Registrado!")
        Else
            MsgBox("Digite a entrada ou saida antes de registrar!")
        End If
    End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.