Jump to content
aprendiz93

Vb.NET abrindo bd no combobox.

Recommended Posts

aprendiz93

Bom dia geral gostaria de uma help.

Criei 2 combobox um de cidades e outro de estados. Gostaria de quando clicar no combobox trazer todas as cidades da bd e o mesmo para o de estados.

Agradeço desde já pela ajuda.

Share this post


Link to post
Share on other sites
carlosmorais

depois de fazeres a conexão com a BD,

comboboxcidade.Items.Add(reader.Item("cidades"))

Share this post


Link to post
Share on other sites
aprendiz93

hm Amigo me explica direito como ficaria, coloquei meu codigo assim:

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\thiago\Meus documentos\Visual Studio 2008\Projects\Cidades.accdb;Persist Security Info=False;"

ComboBox2.Items.Add(reader.Item("cidades"))

End Sub

End Class

Share this post


Link to post
Share on other sites
Caça

Isso não faz nada..

Existe muita informação sobre isso aqui no fórum, faz uma pesquisa e depois coloca aqui as tuas duvidas ;)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
aprendiz93

Bom quer q eu pesquise nas 10000 páginas?

Blzs Obrigado pela atenção.

Share this post


Link to post
Share on other sites
Caça

Sem vontade própria não vais lá e também ninguém te consegue ajudar  ;)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chaveca

Sem vontade própria não vais lá e também ninguém te consegue ajudar  :)

Tenho de concordar com o Caça... Ninguém vai pesquisar por ti...

Mas para te dar uma ajudinha, tu só estas a fazer a conexão á base de dados, tens de fazer um comando sql que te devolva a tabela que tu pretendes e depois afectares a combobox com o resultado do mesmo

Cumprimentos


"Há 10 tipos de pessoas, as que sabem binário e as que não...""Run DOS, Run!"

Share this post


Link to post
Share on other sites
Andrepereira9

boas aprendiz93

Com este código, carregas os estados para a combobox Dos estados, quando a form é carregada.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\thiago\Meus documentos\Visual Studio 2008\Projects\Cidades.accdb;Persist Security Info=False;"

        Dim SQL As String = "Select * From 'NomedaTabela'"

        Dim connection As New OleDbConnection(ligação)

        Dim command As New OleDbCommand(SQL, connection)

     
        connection.Open()

        Dim leitor As OleDbDataReader = command.ExecuteReader()

        If leitor.HasRows Then

            While leitor.Read
                ComboBox1.Items.Add(leitor.Item("Estados"))
            End While

        End If

        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub

Com este código, ao seleccionar o estado, vai preencher a combobox das Cidades, com as cidades referentes ao Estado seleccionado

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        ComboBox2.Items.Clear()
        ComboBox2.Text = ""

        Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\thiago\Meus documentos\Visual Studio 2008\Projects\Cidades.accdb;Persist Security Info=False;"

        Dim SQL As String = "Select * From Cidades where Estados = @estado"

        Dim connection As New OleDbConnection(ligação)

        Dim command As New OleDbCommand(SQL, connection)

        command.Parameters.Add("@estado", OleDbType.VarChar).Value = ComboBox1.Text


        connection.Open()

        Dim leitor As OleDbDataReader = command.ExecuteReader()

        If leitor.HasRows Then

            While leitor.Read
                ComboBox2.Items.Add(leitor.Item("Cidades"))
            End While

        End If

        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub



A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
aprendiz93

Opa blzs?

Seguinte criei um bd para cidades e outro bd para estados. Estou tentando abrir a bd de cidades no combobox2 q criei, fiz alterações no codigo mais n esta dando em nd compila normal mais n traz a bd de cidades no combobox2 estou postando meu código. Agradeço desde já pela ajuda.

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\thiago\Meus documentos\Visual Studio 2008\Projects\sistema\sistema\Cidades.accdb;Persist Security Info=False;"

        Dim sintaxe As String = "Select * From Cidades where Cidades = @cidades"

        Dim conecção As New OleDbConnection(ligação)

        Dim command As New OleDbCommand(sintaxe, conecção)

        command.Parameters.Add("@cidades", OleDb.OleDbType.VarChar).Value = ComboBox2.Text

       

        conecção.Open()

        Dim leitor As OleDbDataReader = command.ExecuteReader()

        If leitor.HasRows Then

            While leitor.Read

                ComboBox2.Items.Add(leitor.Item("Cidades"))

            End While

        End If

        conecção.Close()

        sintaxe = Nothing

        conecção = Nothing

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

1º Não te faz nada, porque tu estas a mandar preencher o combobox, apenas quando alteras um valor

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

Para preencheres o combobox, assim que abres a form, mete o codigo dentro do evento Load da form

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

2º Estás a mandar pesquisar as cidades, através do nome de outra cidade??

Dim sintaxe As String = "Select * From Cidades where Cidades = @cidades"

Para ir buscar todas as cidades, fica assim

Dim sintaxe As String = "Select * From Cidades"

Agora se quiseres ir buscar as cidades, consoante o Estado selecionado, tens que ter na BD, duas colunas, Uma com as cidades, e outra com o estado, e aí é que pesquisar pelas cidades, que tenham o estado selecionado, como estado na BD


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
aprendiz93

Desculpa ta muito confuso isto seguinte vamos fazer passo a passo.

Quero q quando clicar no comboBox2 carregue todas as cidades da bd Cidades.accdb certo?.

Como seria o codigo?

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

   

        Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\thiago\Meus documentos\Visual Studio 2008\Projects\sistema\sistema\Cidades.accdb;Persist Security Info=False;"

        Dim sintaxe As String = "Select * From Cidades"

        Dim conecção As New OleDbConnection(ligação)

        Dim command As New OleDbCommand(sintaxe, conecção)

        command.Parameters.Add("@ComboBox2", OleDb.OleDbType.VarChar).Value = ComboBox2.Text

        conecção.Open()

        Dim leitor As OleDbDataReader = command.ExecuteReader()

        If leitor.HasRows Then

            While leitor.Read

                ComboBox2.Items.Add(leitor.Item("Cidades"))

            End While

        End If

        conecção.Close()

        sintaxe = Nothing

        conecção = Nothing

    End Sub

Seria mais ou menos  Assim?

Share this post


Link to post
Share on other sites
Andrepereira9

Se queres apenas carregar, quando se carrega na combobox, utiliza o evento. Click.

O SelectedIndexChanged, só funciona, quando tem itens

Private Sub ComboBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.Click

ComboBox2.Items.Clear() ' Apaga os itens existentes. Previne a duplicação dos mesmos

Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\thiago\Meus documentos\Visual Studio 2008\Projects\sistema\sistema\Cidades.accdb;Persist Security Info=False;"

        Dim sintaxe As String = "Select * From Cidades"

        Dim conecção As New OleDbConnection(ligação)

        Dim command As New OleDbCommand(sintaxe, conecção)

        conecção.Open()

        Dim leitor As OleDbDataReader = command.ExecuteReader()

        If leitor.HasRows Then

            While leitor.Read
                ComboBox2.Items.Add(leitor.Item("Cidades"))
            End While

        End If

        conecção.Close()

        sintaxe = Nothing

        conecção = Nothing
    End Sub{/code]


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Peter

fiz algo parecido, pode ser que ajude.

no load ele carrega todos os nomes e na funçao seguinte ao escolher um nome poe todos os apelidos referentes ao nome.

 Public Sub form1_Load() Handles MyBase.Load


        For Each ctrl As Control In Me.Controls
            Try
                If TypeOf (ctrl) Is CheckBox Then DirectCast(ctrl, CheckBox).Checked = False
                If TypeOf (ctrl) Is TextBox Then DirectCast(ctrl, TextBox).Clear()
            Catch ex As Exception
                'catch the containers here
            End Try
        Next


        sSQL = "SELECT  distinct nome FROM contactos"
        Dim cmd As New OleDbCommand(sSQL, con)

        con.Open()
        dr = cmd.ExecuteReader()
        Do While dr.Read()

            nomes.Items.Add(dr.Item("nome"))
        Loop

        con.Close()

        apelidos.Hide()
        apelidolb.Hide()






    End Sub

    Private Sub nomes_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nomes.TextChanged
        apelidolb.Show()
        apelidos.Show()
        sSQL = "select apelido from contactos where nome='" & nomes.Text & "'"
        Dim cmd As New OleDbCommand(sSQL, con)

        con.Open()
        dr = cmd.ExecuteReader()
        Do While dr.Read()
            apelidos.Text = dr.Item("apelido")
            apelidos.Items.Add(dr.Item("apelido"))
        Loop
        apelidos.Text = ""
        con.Close()


    End Sub

Share this post


Link to post
Share on other sites
aprendiz93

Bom dia geral

brigadão andrepereira9 e a todos que postaram consegui fazer oq queria.

vlw mesmo abç.

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

×
×
  • 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.