Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre2308

Table Adapter e DataGridView

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.