none
Campos não limpam após clicar "+" da BindingNavigator! RRS feed

  • Pergunta

  • Boa noite a todos!

    Estou trabalhando com o VB.NET 2012, neste projeto estou usando a BindingNavigator, em forms em que estou trabalhando apenas com uma tabela quando clico no botão "+" da barra, os campos são limpos automaticamente sem eu ter que escrever uma linha se quer e funciona blz, já quando estou trabalhando com relacionamento, ou seja "Mestre-Detalhes" em se pressionando o já mencionado botão simplesmente não acontece nada, ai tenho que no evento click do mesmo e forçar a limpeza dos controles!

    Alguém por um acaso tem alguma solução para que possa resolver tal enigma? Segue fragmento do meu código:

    ElseIf ordTab = 2 Then
    
             gSQL = "Select * From tbMateriaPrima Order by Descricao asc"
             daDADOS2 = New SqlDataAdapter(gSQL, gCN)
             daDADOS2.TableMappings.Add("Table", "tbMateriaPrima")
             daDADOS2.Fill(dsDADOS2, "tbMateriaPrima")
    
             gSQL1 = "Select * From tbMarca as MP, tbFornecedor as FORN Where FORN.IdFornecedor = MP.IdFornecedor Order by DescricaoMarca asc"
             daChildDados2 = New SqlDataAdapter(gSQL1, gCN)
             daChildDados2.TableMappings.Add("Table", "tbMarca")
             daChildDados2.Fill(dsDADOS2, "tbMarca")
    
             gMensagem = "Estabelecer uma relação entre as duas tabelas 'Materia Prima e Marca'"
             Dim Relação As New DataRelation("MatPrima_Marca", dsDADOS2.Tables("tbMateriaPrima").Columns("IdMateriaPrima"), dsDADOS2.Tables("tbMarca").Columns("IdMateriaPrima"), False)
             dsDADOS2.Relations.Add(Relação)
    
             gMensagem = "Vincular o conector de dados mestre para a tabela Materia Prima."
             bsDADOS2.DataMember = "tbMateriaPrima"
             bsDADOS2.DataSource = dsDADOS2
    
             gMensagem = "Vincular o conector de dados detalhes para o conector de dados mestre, " & vbNewLine _
                       & "usando o nome DataRelation para filtrar as informações no " & vbNewLine _
                       & "Detalhes tabela com base na linha atual na tabela mestre."
             bsChildDados2.DataSource = bsDADOS2
             bsChildDados2.DataMember = "MatPrima_Marca"
    
             bnItensProducao.BindingSource = bsDADOS2
             dgvMarcas.AutoGenerateColumns = False
             dgvMarcas.DataSource = bsChildDados2
    
             Call Carrega_Campos(2)
             Desabilita_Edicao(2)
    
    
    Private Sub Carrega_Campos(ByVal pTabAtual As Integer)
    
          Try
    
             If pTabAtual = 1 Then
    
                gMensagem = "Carregando campos do Form aba Produtos"
                txtProduto.DataBindings.Add("Text", bsDADOS1, "Produto", True)
    
             ElseIf pTabAtual = 2 Then
    
                gMensagem = "Configurando Controles do Form aba Materias Primas"
                ordbNao = New Binding("ChecKed", bsDADOS2, "Embalagem")
                olsbUnidades = New Binding("Text", bsDADOS2, "DescUnidade")
                omskQtdeEstoque = New Binding("Text", bsDADOS2, "Estoque")
                omskCapacidadeEmbal = New Binding("Text", bsDADOS2, "Capacidade")
                omskValorUnitario = New Binding("Text", bsDADOS2, "Valor_Unitario")
                omskCustoUnitario = New Binding("Text", bsDADOS2, "Custo_Unitario")
                omskVlrEstoque = New Binding("Text", bsDADOS2, "Valor_Estoque")
                omskQtdeUltCompra = New Binding("Text", bsDADOS2, "QtdeUltCompra")
                omskQtdeUltSaida = New Binding("Text", bsDADOS2, "QtdeUltSaida")
    
                gMensagem = "Carregando campos do Form aba Materias Primas"
                txtMateriaPrima.DataBindings.Add("Text", bsDADOS2, "Descricao", True)
                rdbSim.DataBindings.Add("ChecKed", bsDADOS2, "Embalagem")
                rdbNao.DataBindings.Add(ordbNao)
                lsbUnidades.DataBindings.Add(olsbUnidades)
                txtAbrevUnidade.DataBindings.Add("Text", bsDADOS2, "DescUnidade", True)
                mskQtdeEstoque.DataBindings.Add(omskQtdeEstoque)
                mskCapacidadeEmbal.DataBindings.Add(omskCapacidadeEmbal)
                mskValorUnitario.DataBindings.Add(omskValorUnitario)
                mskCustoUnitario.DataBindings.Add(omskCustoUnitario)
                mskVlrEstoque.DataBindings.Add(omskVlrEstoque)
                dtpUltimaCompra.DataBindings.Add("Text", bsDADOS2, "DataUltCompra", True)
                mskQtdeUltCompra.DataBindings.Add(omskQtdeUltCompra)
                dtpUltimaSaida.DataBindings.Add("Text", bsDADOS2, "DataUltSaida", True)
                mskQtdeUltSaida.DataBindings.Add(omskQtdeUltSaida)
    
             End If
    
          Catch ex As Exception
             MsgBox(ex.Message & vbNewLine & gMensagem, MsgBoxStyle.Critical, "Carrega_Campos")
          End Try
    
    End Sub
    
    
    Private Sub Desabilita_Edicao(ByVal pQualTab As Integer)
    
          Try
    
             If pQualTab = 1 Then
                gMensagem = "Desabilitando campos da Tab 1"
                txtProduto.ReadOnly = True
             ElseIf pQualTab = 2 Then
                gMensagem = "Desabilitando campos da Tab 2"
                txtMateriaPrima.ReadOnly = True
                rdbSim.Enabled = False
                rdbNao.Enabled = False
                rdbSim.TabStop = False
                rdbNao.TabStop = False
                lsbUnidades.Enabled = False
                mskQtdeEstoque.Readonly = True
                mskCapacidadeEmbal.Readonly = True
                mskValorUnitario.Readonly = True
                mskCustoUnitario.Readonly = True
                mskVlrEstoque.Readonly = True
                dtpUltimaCompra.Readonly = True
                mskQtdeUltCompra.Readonly = True
                dtpUltimaSaida.Readonly = True
                mskQtdeUltSaida.Readonly = True
             End If
    
          Catch ex As Exception
             MsgBox(ex.Message & vbNewLine & gMensagem, MsgBoxStyle.Critical, "Desabilita_Edicao")
          End Try
    
    End Sub
    
    
    
    Att.

    Dilson J. Hasselmann Desenvolvedor VB.NET

    sábado, 3 de janeiro de 2015 00:54

Respostas

Todas as Respostas

  • Primeiro: não é recomendável criar nomes de variáveis, métodos, etc com acentuação = "Dim Relação As New DataRelation".

    Segundo: Verifique o relacionamento na tabela e as chaves nessa declaração se está ok.


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    sábado, 3 de janeiro de 2015 02:13
  • Bom dia a todos!

    1º OK, corrigido,

    2º Esta tudo ok, senão nem carregaria meu form devido a alguma irregaliridade, ainda mais em se tratando de SQL Server, simplesmente não completaria o resultado!

    Att.


    Dilson J. Hasselmann Desenvolvedor VB.NET

    sábado, 3 de janeiro de 2015 11:18
  • Pelo que vi você está usando o controle tabcontrol, com ele o funcionamento do binding é diferente, não funciona como na tela diretamente. Para usar o tabcontrol você tem que atribuir a cada tabpage um bindingsource e no selectedindex dela atribui ao binding.

    Dá uma olhada nesse link: http://www.vbforums.com/showthread.php?444097-2005-Use-of-Binding-navigator


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta DJHasselmann quinta-feira, 19 de fevereiro de 2015 15:51
    sábado, 3 de janeiro de 2015 16:23