Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

manuelbarreto

duvida combobox

Mensagens Recomendadas

manuelbarreto

Olá eu tenho uma tabela com o nomefornecedor e com o nif.

tou a fazer um select á base de dados e coloco os nomes dos fornecedores numa combobox mas eu ao guardar aquele fornecedor numa tabela queria era guardar o nif não o nome dele.

como posso fazer isso??

obg :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vbtipo

Tens uma de duas hipoteses:

1 - carregar o nome do fornecedor juntamente com o nif na combobox;

2 - Carregar nif e nome do fornecedor num array e depois ao clicar na combobox teres que ir ao array buscar o nif


Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

3 - Trazer a pesquisa, por exemplo para um datatable, dar esse datatable ao datasource da combo e por fim atribuír os nomes das colunas ao display e value members


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

eu estou a guardar os dados num array.

mas depois como posso ir buscar o nif do fornecedor celeccionado na combobox??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

alguem me pode dar uma ajuda.

como é que posso ir buscar o nif do fornecedor ao array quando o seleccionar na combobox?

obg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vbtipo

Tens que pegar a posição do item do conteúdo do combobox tem e depois é ir ao array e pegar o valor dessa posição.

Ps: Cuidado que o array começa na posição Zero e combobox não sei bem se começa também na posição zero ou um.


Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Tens que pegar a posição do item do conteúdo do combobox tem e depois é ir ao array e pegar o valor dessa posição.

Ps: Cuidado que o array começa na posição Zero e combobox não sei bem se começa também na posição zero ou um.

A combobox também começa na posição 0.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

alguem me pode dar um exemplo de código como pegar nesses valores sff é que eu já n me recorda lá mt bem como se faz isso.. obg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Se não estou em erro, tens que ir buscar o SelectedIndex da combobox.

comboBox1.SelectedIndex

Correcto. Mas também podes ir buscar o SelectedValue.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

tenho de fazer isso e depois ir ao array onde está o nome e buscar a mesma posiçao para ir buscar o nif??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

O código que eu tenho quando carreo o form é este:

 Private Sub Produtos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim n As Integer
        Dim nome As String
        Dim fornecedor(1000) As String
        Dim numeronif(1000) As Integer
        Dim nif As Integer
        ' Texto de ligação à base de dados 
        Dim mmyConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\utilizador\AppData\Desktop\Pap_Project\Pap_economato\Pap_economato\economato.mdf';" & _
        ";Integrated Security=True;User Instance=True"
        Dim sSQL As String = "SELECT * FROM fornecedor "
        ' Cria uma nova ligação à base de dados 
        Dim cconnection As New SqlConnection(mmyConnectionString)
        ' Criação do comando indicando a instrução e a ligação 
        Dim ccommand As New SqlCommand(sSQL, cconnection)
        ' Indicação dos parâmetros da selecção 
        ' Abre a ligação 
        cconnection.Open()
        ' Executa o comando colocando num SqlDataReader os resultados 
        Dim rreader As SqlDataReader = ccommand.ExecuteReader()
        ' Caso existam rows (linhas) 
        If rreader.HasRows Then
            ' Executa um ciclo nas linhas existentes mostrando os campos nif, nome, localidade, codigo_postal, cod_localidade, rua, contacto, fax, mail
            While rreader.Read()
                Debug.WriteLine(rreader.Item("numfiscal"))
                nif = (rreader.Item("numfiscal"))
                Debug.WriteLine(rreader.Item("nome"))
                nome = ((rreader.Item("nome")))
                cb_fornecedor.Items.Add(nome)
                fornecedor(n) = nome
                numeronif(n) = nif
                n = n + 1
            End While
            ' Fecha a ligação e limpa as variáveis 
            cconnection.Close()
            cconnection = Nothing
            ccommand = Nothing
        End If
    End Sub

e agora queria saber como depois posso ir buscar os valores do array quando seleccionar um fornecedor.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Tu tens a connection, tu tens o command, o que te impede de fazeres um fill a uma datatable e dares a datatable ao datasource da combobox?

EDIT:

fornecedor(1000), numeronif(1000)... se eu tiver 1002 fornacedores o que acontece?

Acaba o mundo?

Estás a abordar isto do lado errado.

Já para não falar do extremo desperdício de memória.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

entao se eu apagar este código e utilizar um dataset funciona mesmo??

é que eu ando aqui as aranhas com isto que nao sei como eide fazer.. eu preciso de ir buscar o nome e o nif mas depois ao registar registar só o nif

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

eu tava a utilizar um dataset mas na propriadade valueMenber punha a tomar o valor da coluna nif mas nao me estáva a funcionar mas tb estáva a utilizar o código <o mesmo tempo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Entre o teu open e o teu close, substituí o teu código por:

        Dim DA As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(ccommand)
        Dim DT As New DataTable
        DT.Locale = System.Globalization.CultureInfo.InvariantCulture
        DA.Fill(DT)

        ComboBox1.DisplayMember = "nome"
        ComboBox1.ValueMember = "numfiscal"
        ComboBox1.DataSource = DT

Basta-te depois resgatar o NIF com ComboBox1.SelectedValue


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ByMySlf

Correcto. Mas também podes ir buscar o SelectedValue.

Sim, eu sabia que podia ir buscar o SelectedValue, mas entendi que ele pretendia obter o indíce do que seleccionou na combobox.  :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

entao depois para ir buscar o nif é assim:

Private Sub cb_fornecedor_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_fornecedor.SelectedValueChanged
        a = cb_fornecedor.SelectedValue
    End Sub

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.