none
Carregar dados em uma textbox atraves de DataTable RRS feed

  • Pergunta

  • Tenho o codigo abaixo para carregar os forncedores de minha tabela que contem os campos

    id,razao,fantasia, cnpj,endereco, telefone1, telefone2,email

    Até ai tudo bem, carrega todos na comboxbox, porem queria que ao clicar em um fornecedor carregasse em uma texbox o numero de telefone do campo da tabela chamado telefone1 correspondente ao fornecedor escolhido.

    Segue

    Sub CarregaComboxFornecedor()

            Try
                Abrir()
                Dim sql As String
                Dim dt As New DataTable
                Dim da As MySqlDataAdapter

                sql = "SELECT * FROM fornecedor ORDER BY fantasia"

                da = New MySqlDataAdapter(sql, con)
                da.Fill(dt)

                If dt.Rows.Count > 0 Then
                    cbfornecedor.ValueMember = "id"
                    cbfornecedor.DisplayMember = "fantasia"
                    cbfornecedor.DataSource = dt

                Else

                End If

            Catch ex As Exception

            End Try
        End Sub

    sexta-feira, 29 de outubro de 2021 19:17

Todas as Respostas

  • Alfaconect,

          Desculpe, esse "...ao clicar em um fornecedor..." seria um clique na ComboBox ou um clique na Grid? Em outras palavras, onde o usuário clicará?

          Se for na Grid, abaixo eu coloco um trecho de código de um sistema meu que usa o evento "CellClick" da Grid de nome "dgvPadrao" para preencher nas TextBox os dados equivalentes da Grid:

    Private Sub dgvPadrao_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPadrao.CellClick
    
        Try
    
            If Not e.RowIndex = -1 Then
                txtCodigo.Text = dgvPadrao.Item(Bll.Util.enmCamposGrid.Codigo, e.RowIndex).Value
                txtNome.Text = dgvPadrao.Item(Bll.Util.enmCamposGrid.Nome, e.RowIndex).Value
                txtDescricao.Text = dgvPadrao.Item(Bll.Util.enmCamposGrid.Descricao, e.RowIndex).Value
    
                If dgvPadrao.Item(Bll.Util.enmCamposGrid.Situacao, e.RowIndex).Value = "Ativo" Then
                    rbtAtivo.Checked = True
                Else
                    rbtInativo.Checked = True
                End If
    
            End If
    
            btnNovo.Tag = ""
            'AcertaBotoes(Me, 2)
    
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    
    End Sub

       Espero que ajude.

    []'s,
    Fabio I.
    • Editado Fabio I sábado, 30 de outubro de 2021 11:11
    sábado, 30 de outubro de 2021 11:10
  • A combo é usada quando clica nela carrega os registros da tabela fornecedor preenchendo mcom todos os campos "NomeFantasia", o que estou querendo é quando clicar em algum nome dentro da combo carregue em um textbox ou label o telefone associado ao registro selecionado:

    Ex: Cliquei na combo, abriu os fornecedores.
    Selecionei o resitro: AUTO ESCOLA BREU
    dai preenche na textbox o telefone associado a esse registro na tabela.
    sábado, 30 de outubro de 2021 12:13
  • Alfaconect,

        Acredito que o segredo é usar algum evento da Combobox relacionado ao "click". Exemplos: "SelectedIndexChanged" (dispara quando o item da combobox já foi modificado) ou "SelectionChangeCommitted".


    ======================================
    VB.Net ComboBox Control with EXAMPLE

    Public Class Form1
    
        Private Sub ComboBox1_SelectedIndexChanged(sd As Object, evnt As EventArgs) Handles ComboBox1.SelectedIndexChanged
    
            Dim var_gender As String
    
            var_gender = ComboBox1.Text
    
            MessageBox.Show(var_gender)
    
        End Sub
    
    End Class

    https://www.guru99.com/vb-net-combobox-control.html

    ======================================
    ComboBox.SelectionChangeCommitted Event

    private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
    {
    
        ComboBox senderComboBox = (ComboBox) sender;
      
        // Change the length of the text box depending on what the user has 
        // selected and committed using the SelectionLength property.
        if (senderComboBox.SelectionLength > 0)
        {
            textbox1.Width = 
                senderComboBox.SelectedItem.ToString().Length *
                ((int) this.textbox1.Font.SizeInPoints);
            textbox1.Text = senderComboBox.SelectedItem.ToString();
        }
    }

    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.combobox.selectionchangecommitted?redirectedfrom=MSDN&view=windowsdesktop-5.0

    ======================================

       Minha sugestão: - Faça testes com cada um destes eventos para ver qual atende melhor sua demanda. Os testes incluem entrada no formulário, modificações com a combo em branco na linha de escolha e quando já foi preenchido pelo menos uma vez e outros casos no qual o usuário terá liberdade de fazer.


    []'s,
    Fabio I.
    sábado, 30 de outubro de 2021 14:45
  • Tive que fazer da seguinte forma

    Private Sub cbfornecedor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbfornecedor.SelectedIndexChanged

     Try
               'Conexao com o BD em um Modulo "Abrir"

                Abrir()
                Dim cmd As MySqlCommand
                Dim reader As MySqlDataReader
                Dim sql As String

                sql = "SELECT * FROM fornecedor WHERE fantasia = '" & cbfornecedor.Text & "'"
                cmd = New MySqlCommand(sql, con)
                reader = cmd.ExecuteReader

                If reader.Read = True Then

                    'RECUPERANDO O NOME FANTASIA
                    Dim tel1 As String


                    tel1 = reader(5)


                    lbltelfornecedor.Text = tel1
                    reader.Close()

                Else

                End If
                reader.Close()

            Catch ex As Exception
                MsgBox("Erro ao carregar dados do forncedor paras sms ") ', +ex.Message)

            End Try

    end sub

    sábado, 30 de outubro de 2021 17:17
  • Alfaconect,

        Okay, mas você pode isolar tudo que é chamada ao Banco de Dados - DAL (Data Access Layer) e tudo que é Regra de Negócio - BLL (Business Logic Layer) para que seu código fique em 3 camadas.
        Eu tenho um exemplo de um sistema que faz isto em:

    =========================================
    SISTEMA EXEMPLO CLIENTE / PRODUTO DE LOJA

    https://www.vbmania.com.br/index.php?modulo=detalhe&id=9259

    =========================================

        Por favor, se eu te ajudei não esqueça de votar como resposta... eu adoro ganhar estes pontinhos...

    []'s,
    Fabio I.

    • Editado Fabio I sábado, 30 de outubro de 2021 21:07
    sábado, 30 de outubro de 2021 21:06