Jump to content

Recommended Posts

Posted

Boas

Agora com o final do ano e com projectos para apresentar tou devolta de um trbalho com base de dados.

O erro que me da é que as subconsultas so podem devolver no máximo um registo. E no meu caso é mais que um registo. Existe algum comando ou forma que possa dar a volta por cima?

Explicação do codigo: Este codigo vai a tabela disciplinas buscar o nome da disciplina de um determinado  professor, numa tabela professor_disciplinas.

Connect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Dados.mdb"
        Connect.Open()
        'Disciplina
        Sqltext = "Select Distinct(nome) From T_Disciplina " _
                    & "where cod_disciplina = (Select cod_disciplina From T_Professor_Disciplina " _
                                             & "where cod_professor = " & professor & ")"

        Adaptador = New OleDb.OleDbDataAdapter(Sqltext, Connect)
        Adaptador.Fill(Dados_Disciplina, "T_Disciplina, T_Professor_Disciplina")
        Connect.Close()
        max_disciplina = Dados_Disciplina.Tables("T_Disciplina").Rows.Count

        For i = 0 To max_disciplina - 1
            cbx_disciplina.Items.Add(Dados_Disciplina.Tables("T_Disciplina").Rows(i).Item(0))
        Next
Posted

sim dados disciplina é "New DataSet". Acho que é o que eu tenho daptador.Fill(Dados_Disciplina, "T_Disciplina").

ja agora eu posso utilizar esta expressão: daptador.Fill(Dados_Disciplina, "T_Disciplina, T_Professor_Disciplina") ?? é valida?

Posted

Não percebi muito bem :S (sou novo na base de dados)

pelo que percebi é mais ou menos isto, so que penso que isto nao é possivel:

Sqltext = "Select cod_disciplina From T_Professor_Disciplina " _
                   & "where cod_professor = " & professor & ")"
Adaptador = New OleDb.OleDbDataAdapter(Sqltext, Connect)
        Adaptador.Fill(Dados_Disciplina, "T_Professor_Disciplina")
max_disciplina = Dados_Disciplina.Tables("T_Professor_Disciplina").Rows.Count

For i = 0 To max_disciplina - 1
            Sqltext = "Select Distinct(nome) From T_Disciplina " _
                    & "where cod_disciplina = " & Dados_Disciplina.Tables("T_Disciplina").Rows(i).Item(0)
    Adaptador = New OleDb.OleDbDataAdapter(Sqltext, Connect)
            Adaptador.Fill(Dados_Disciplina, "T_Professor_Disciplina")
        Next
Posted

Pois mas ainda nao dei isso :S Resolvi da seguinte forma:

'Disciplina
        Connect.Open()
        Sqltext = "Select cod_disciplina From T_Professor_Disciplina " _
                & "where cod_professor = " & professor

        Adaptador = New OleDb.OleDbDataAdapter(Sqltext, Connect)
        Adaptador.Fill(Dados_Disciplina, "T_Professor_Disciplina")



        max_disciplina = Dados_Disciplina.Tables("T_Professor_Disciplina").Rows.Count

        For i = 0 To max_disciplina - 1
            Sqltext = "Select nome From T_Disciplina " _
                    & "where cod_disciplina = " & Dados_Disciplina.Tables("T_Professor_Disciplina").Rows(i).Item("cod_disciplina")

            Comando.CommandText = Sqltext
            Comando.Connection = Connect
            nome_disciplina = Comando.ExecuteScalar

            cbx_disciplina.Items.Add(nome_disciplina)
        Next

        

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.