Jump to content

Recommended Posts

Posted

Boa tarde pessoal.

Estou com o seguinte problema:

Tenho duas tabelas (valencias e actividades), onde cada valencia pode ter varias actividades.

E quero interligar duas listbox com estas tabelas. Do tipo, uma listbox terá os registos das valencias e ao clicar em um registo, aparece na outra listbox as actividades pertencentes a esta valencia.

Tenho as seguintes funçoes que se encontram no Load do form:

    Private Sub lerdadosvalencias()
        Dim con2 As New SqlClient.SqlConnection
        Dim cmd2 As New SqlClient.SqlCommand
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet

        Try
            con2.ConnectionString = ConnStr_gia

            cmd2.CommandText = "SELECT * FROM Valencias"
            cmd2.Connection = con2

            da.SelectCommand = cmd2
            da.Fill(ds)

            lstbox_valencias.DataSource = ds.Tables(0)
            lstbox_valencias.DisplayMember = "DescVal"
            lstbox_valencias.ValueMember = "ID_Val"
            lstbox_valencias.Refresh()

        Catch ex As Exception

        End Try

    End Sub

e

    Private Sub lerdadosactividades()
        Dim con As New SqlClient.SqlConnection

        Dim cmd As New SqlClient.SqlCommand
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet

        Try
            con.ConnectionString = ConnStr_gia
            dgv_actividades.Columns.Clear()
            cmd.CommandText = "SELECT Actividades.ID_Actividade as ID_Registo, Valencias.DescVal as Valência, Actividades.DescAct as Actividade FROM Valencias INNER JOIN Actividades ON Valencias.ID_Val = Actividades.ID_Val "
            cmd.CommandText = cmd.CommandText & "WHERE Actividades.ID_Val = " & lstbox_valencias.SelectedValue & " ORDER BY Valencias.DescVal"
            cmd.Connection = con

            da.SelectCommand = cmd
            da.Fill(ds)

            ListBox1.DataSource = ds.Tables(0)
            ListBox1.DisplayMember = "Actividades.ID_Val"
            ListBox1.DisplayMember = "Actividades.DescAct"
            ListBox1.Refresh()

        Catch ex As Exception
            MsgBox("Erro!")
        End Try
    End Sub

Esta ultima função é que me está a dar problemas. Ao invés do nome das actividades pertencentes a cada valencia aparece: System.Data.DataRowView

Espero ter explicado de forma simples.

Abraço

Posted

bruno1234, já estive a perder um bocado de tempo a procurar...e não encontrei nada.

jpaulino, assim fiz e aparece-me a mesma coisa.

Agora reparei que tinha um erro no código, ao invés de ter posto ValueMember voltei a meter DisplayMember, na listbox1. Mas já está corrigido. Mas mesmo assim deu-me outro erro...Nao abre o form que desejo e diz: "Não é possível criar uma lista subordinada para o campo Actividades."

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.