Andre2308 0 Denunciar post Postado Abril 22, 2009 Caros amigos.... estou com uma dúvida! Bom.. Quando realizamos as configurações do Dataset e tableadapter ele gera o fill e o get, eu quis criar uma query extra com relacionamentos de tres tabelas, e usando seus respectivos campos, sendo que na hora que eu aponto esse método criado no datasource(metodo que recupera a query citada) do gridview e edito as colunas ele nao exibe as colunas das tabelas relacionadas! Nao sei se é assim que se usa! Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
RicardoCarvalho 0 Denunciar post Postado Abril 22, 2009 caraca véio... eu apanhei um monte com isso também, fiz um relacionamento de 3 tabelas para um Treeview.... vou te postar aqui o codigo pra você ver... acho que vai te ajudar bastante.... Dim dst As New DataSet Dim da2 As New MySqlDataAdapter("select id as idCategoria, Descricao as descricao_categoria from Categoria", ConnMySql) da2.Fill(dst, "Categoria") Dim da As New MySqlDataAdapter("select id as idSub, descricao as descricao_sub, categoria_id from SubCategoria", ConnMySql) da.Fill(dst, "SubCategoria") Dim da3 As New MySqlDataAdapter("select id as idProduto, Titulo as descricao_produto, Categoria_id as SubCat_id from Produto", ConnMySql) da3.Fill(dst, "Produto") 'até aqui carreguei os datasets com os Produtos e Categorias.... abaixo vou fazer um relacionamento entre Produto e Categoria. FechaConnMySql() dst.Relations.Add("id_relacao", dst.Tables("Categoria").Columns("idCategoria"), dst.Tables("SubCategoria").Columns("categoria_id")) dst.Relations.Add("id_sub_relacao", dst.Tables("SubCategoria").Columns("idSub"), dst.Tables("Produto").Columns("subCat_id")) 'aqui crio uma relação entre a categoria e o produto através de: ' tabela produto, coluna 'categoria_id' vinculada com: ' tabela Categoria, coluna 'id' ' então dessa relação é criada uma coluna nova no DataSet com a relação, assim ' posso colocar um DataSource no TreeView através de For Each ' vamos ver no que vai dar a engronha agora Dim i As Integer = 0 For Each masterRow As DataRow In dst.Tables("Categoria").Rows 'carregando o 1º nodes Papais Dim masterNode As TreeNode = New TreeNode(masterRow("Descricao_categoria").ToString) tree.Nodes.Add(masterNode) tree.Nodes(i).SelectAction = TreeNodeSelectAction.SelectExpand i += 1 'carregando o 2º nodes, Filhos For Each childRow As DataRow In masterRow.GetChildRows("id_relacao") Dim childNode As New TreeNode childNode.Text = childRow("descricao_sub").ToString childNode.Value = childRow("idSub").ToString masterNode.ChildNodes.Add(childNode) childNode.SelectAction = TreeNodeSelectAction.SelectExpand 'Carregando os filhos dos filhos, ou seja, o neto do Pai lá em cima For Each childRow2 As DataRow In childRow.GetChildRows("id_sub_relacao") Dim childNode2 As New TreeNode childNode2.Text = childRow2("descricao_produto").ToString childNode2.Value = childRow2("idproduto").ToString childNode2.NavigateUrl = "Categorias.aspx?id=" & childNode2.Value childNode.ChildNodes.Add(childNode2) Next Next Next dst.Dispose() dst = Nothing não sei se é isto que você quer... isso no meu treeview fica assim: CFTV ____Sistema _________Meu Sistema _________Sistema do vizinho ____Placas _________Placa xing ling _________Placa do professor girafalles Protocoladores ____ xxxxx _________ xxxxxxxxxxx __________xxxxxxxx Simples não é... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Andre2308 0 Denunciar post Postado Abril 23, 2009 Meu caro amigo!! Não é bem isso..Me ajudou em outro assunto, mas na verdade o meu problema é o seguinte! supondo que eu tenha tres tabelas relacionadas.... products categories e supliers e eu queira escrever uma query desse tipo num método de um DataTable em um TableAdapter chamado getProdCatSup(); quando eu chamo esse método: gvProducts.DataSource = productsAdapter.getProdCatSup(); gvProducts.DataBind(); dá um erro: Falha ao ativar restrições. Uma ou mais linhas contêm valores que violam as restrições non-null, unique ou foreign-key. Eu tenho certeza que nao é problema da query...e nem dos dados....pois eu executo no sql manager studio e nada acontece! SELECT Products.ProductID, Products.ProductName, Categories.CategoryName, Suppliers.CompanyName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID Se eu fizer com o ObjectDataSource em que eu tenho que associar o método promeiro em Choose data source --> New Data Source eu escolho Object e nomeio Escolho o TableAdapter e depois o método getProdCatSup() quando vou editar as colunas nao aparece os campos das tabelas relacionadas, no caso os campos(Categories.CategoryName, Suppliers.CompanyName) testei mesmo assim....sem os campos que eu preciso e o que acontece???? a mesma coisa....o mesmo erro.... Me salvem por favor!!!! Um forte abraço Compartilhar este post Link para o post Compartilhar em outros sites
Juliano.net 2 Denunciar post Postado Abril 24, 2009 Se você utilizar o QuickWatch para verificar o valor do productsAdapter.getProdCatSup() antes de fazer o DataBind também acontece o erro? A estrutura da DataTable confere com os campos selecionados em seu SQL? Compartilhar este post Link para o post Compartilhar em outros sites
Andre2308 0 Denunciar post Postado Abril 25, 2009 Na verdade eu adicionei as colunas das tabelas relacionadas no datatable.. mas continua da mesma forma dando erro Compartilhar este post Link para o post Compartilhar em outros sites