Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

manuelbarreto

duvida combobox

Recommended Posts

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:

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites
manuelbarreto

eu estou a guardar os dados num array.

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
ByMySlf

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

comboBox1.SelectedIndex

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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??

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.