Jump to content

duvida combobox


manuelbarreto
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

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"

Link to comment
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
 Share

×
×
  • Create New...

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.