Jump to content
aesp

[VB.NET] Combobox + SQL

Recommended Posts

aesp

É o seguinte pessoal, estou a preencher uma textbox com os dados da base de dados, o problema é que devido o nchar(16), as outra localidades ficam afectadas, podem ver na imagem abaixo:

2hxazj8.png

Já exprimentei no load fazer RTrim, mas sem sucesso.  🤔

Share this post


Link to post
Share on other sites
aesp

Existe alguma maneira de guardar os dados da tabela e de repor-los rapidamente?  :P

É que ao mudar perco tudo.

Share this post


Link to post
Share on other sites
Caça

Não não perdes, que é que disse isso?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Para varchar não porque varchar aceita qualquer coisa, seja numero, seja texto.

Mas convém sempre fazer um Backup primeiro :P


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
aesp

Mau, agora como ele apanhou os espaços na inserção parece que vou ter de editar tudo a pata  :P

Mas obrigado, Caça  :D

Share this post


Link to post
Share on other sites
bioshock

Utilizaste a função RTrim depois e só depois de preencheres a combobox com informações da BD?

Share this post


Link to post
Share on other sites
aesp
Private Sub LoadDistritos()
        Dim query As String = "SELECT DISTINCT Distrito FROM TblLocalidade;"
        Dim DataAdapter As New SqlDataAdapter(query, ConnectionString)
        Dim DataSet As New DataSet

        ConnectionString.Open()

        DataAdapter.Fill(DataSet, "TblLocalidade")

            With (CBoxDistrito)
                .DataSource = DataSet.Tables("TblLocalidade")
                .DisplayMember = "Distrito"
                .SelectedIndex = 0
            End With
            ConnectionString.Close()
    End Sub

Private Sub AddFormando_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call LoadDistritos()
        CBoxDistrito.Text = "Seleccione"
        RTrim(CBoxDistrito.Text)
End Sub

Share this post


Link to post
Share on other sites
bioshock

Realmente, estive aqui a ver e não funciona.

Uma das possíveis soluções e isto resolve-te logo o caso é colocar a propriedade DropDownStyle da Combobox como DropDownList.

Share this post


Link to post
Share on other sites
aesp

Também resolve  :P , obrigado a todos pela ajuda fico por aqui.

Edit: Já agora é possível quando o utilizador selecciona um distrito os concelhos mudarem? Estou a utilizar o evento do TextChanged mas sem sucesso.

Share this post


Link to post
Share on other sites
aesp

Não percebi Caça, desculpa lá, aqui fica o código se me puderes dizer onde tenho de fazer as alterações, agradecia.  😎

Imports System.Data.SqlClient
Imports System.Data
Imports System.Windows.Forms

Public Class AddFormando
    Private ConnectionString As New SqlConnection("Data Source=localhost;Initial Catalog=GestFormacao;Integrated Security=SSPI;")

#Region "// Instruções de SQL"
    Private Sub LoadSexo()
        Dim query As String = "SELECT * FROM TblSexo;"
        Dim DataAdapter As New SqlDataAdapter(query, ConnectionString)
        Dim DataSet As New DataSet

        ConnectionString.Open()

        DataAdapter.Fill(DataSet, "TblSexo")

        With (CBoxSexo)
            .DataSource = DataSet.Tables("TblSexo")
            .DisplayMember = "Sexo"
            .SelectedIndex = 0
        End With
        ConnectionString.Close()
    End Sub
    Private Sub LoadDistritos()
        Dim query As String = "SELECT DISTINCT Distrito FROM TblLocalidade;"
        Dim DataAdapter As New SqlDataAdapter(query, ConnectionString)
        Dim DataSet As New DataSet

        ConnectionString.Open()

        DataAdapter.Fill(DataSet, "TblLocalidade")

        With (CBoxDistrito)
            .DataSource = DataSet.Tables("TblLocalidade")
            .DisplayMember = "Distrito"
            .SelectedIndex = 0
        End With
        ConnectionString.Close()
    End Sub
    Private Sub LoadConcelhos()
        Dim query As String = "SELECT * FROM TblLocalidade WHERE TblLocalidade.Distrito LIKE '" & CBoxDistrito.Text & "';"
        Dim DataAdapter As New SqlDataAdapter(query, ConnectionString)
        Dim DataSet As New DataSet

        ConnectionString.Open()

        DataAdapter.Fill(DataSet, "TblLocalidade")

        With (CBoxConcelho)
            .DataSource = DataSet.Tables("TblLocalidade")
            .DisplayMember = "Concelho"
            .SelectedIndex = 0
        End With
        ConnectionString.Close()
    End Sub
#End Region

#Region "// Carregamentos do formulário"
    Private Sub AddFormando_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Call LoadNacionalidades()
        Call LoadSexo()
        Call LoadDistritos()
        Call LoadConcelhos()
        Me.CBoxDistrito.Items.Insert(-1, "Seleccionar")
        Me.CBoxDistrito.SelectedItem = "Seleccionar"
    End Sub
#End Region

#Region "// Funcionalidades dos botões"
    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub
    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub
#End Region

End Class

Share this post


Link to post
Share on other sites
Caça

No evento SelectIndexChanged da combobox dos distritos, chamas o sub LoadConcelhos para carregar os concelhos do respectivo distrito


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

Se tiveres tudo numa tabela, então aí podes utilizar o evento SelectIndexChanged da Combobox Distrito para alterar os valores da Combobox Concelhos.

Share this post


Link to post
Share on other sites
Caça

Já tens a conexão aberta. Ou fechas-la na ultima vez que a usas-te ou ignoras essa linha de código.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
psantos10

Dá erro  🤔

errouu.png

Para estes casos use sempre o bloco try {} catch {}

Ficaria algo mais ou menos como isto:


Try
            ConnectionString.Open()

            DataAdapter.Fill(DataSet...
            ....

            With (CBoxConcelho)
                ....
            End With
           
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            ConnectionString.Close()
        End Try

Espero ter ajudado

Cumps

PS


-------Assinatura?

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.