koelho_807 Posted May 20, 2009 at 07:57 PM Report #265927 Posted May 20, 2009 at 07:57 PM 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
bruno1234 Posted May 20, 2009 at 08:30 PM Report #265947 Posted May 20, 2009 at 08:30 PM O teu dados disciplina é o q? uma datatable? Se retornares mais do q uma tabela podes fazer o adapter.fill a um dataset, e ficam lá as tabelas todas. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
koelho_807 Posted May 20, 2009 at 08:42 PM Author Report #265950 Posted May 20, 2009 at 08:42 PM 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?
bruno1234 Posted May 20, 2009 at 08:53 PM Report #265954 Posted May 20, 2009 at 08:53 PM Acho q não, a tua query é q tem q devolver 2 tabelas. Podes fazer uma stored procedure para isso, é melhor. Fazes o select a uma e o select a outra na mesma stored procedure. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
koelho_807 Posted May 20, 2009 at 09:09 PM Author Report #265958 Posted May 20, 2009 at 09:09 PM 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
bruno1234 Posted May 20, 2009 at 09:15 PM Report #265963 Posted May 20, 2009 at 09:15 PM Não, isso são duas querys seguidas no lado do vb .net. Estava a falar em stored procedures: http://databases.about.com/od/sqlserver/a/storedprocedure.htm Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
koelho_807 Posted May 23, 2009 at 09:03 AM Author Report #266665 Posted May 23, 2009 at 09:03 AM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now