Pesquisar na Comunidade
Mostrando resultados para as tags ''erro inner join''.
Encontrado 1 registro
-
Boa tarde, pessoal! Hoje já faz 4 dias que estou pelejando com um código aqui mas não consigo resolver. Meu sistema é para uma clínica veterinária. As tabelas envolvidas no erro são "tabela_produtoServico", "tabela_pedidoAoFornecedor" e "tabela_itensPedidoAoFornecedor". A primeira possui todos os produtos cadastrados. A segunda, os pedidos feitos ao fornecedor e a última, todos os itens contidos em cada pedido realizado ao fornecedor. Tenho um formulário onde o usuário poderá alterar uma ordem de pedido caso a mesma ainda não tenha sido finalizada. No form, o usuário vai selecionar em um combobox, o nome do fornecedor para quem foi feito o pedido, num dataGridView abaixo, serão exibidos todos os pedidos já realizados a esse fornecedor selecionado e num segundo dataGridView mais abaixo, quando o usuário der dois cliques na linha correspondente ao pedido no primeiro dataGridView, nesse segundo serão listados todos os itens desse pedido em questão. Voilà o problema: meu código sql INNER JOIN não está funcionando pois a chave estrangeira da tabela de itens que é a chave primaria da tabela de produtoServico não é descoberta, pois dá erro dizendo que ela não pertence a tabela. Veja imagens das tabelas e relações: Como podem perceber, a tabela de itens não possui chave primária mas isso não interfere pois já adicionei uma campo de chave primária pra ver se resolveria e o mesmo erro continuou. Fiz também uma consulta com o mesmo código diretamente no access e o resultado foi satisfatório. o código vb.net é o seguinte: If dataGridPedidosAoFornecedor.Rows.Count > 0 Then If dataGridPedidosAoFornecedor.CurrentRow.Cells(3).Value = "FINALIZADO" Then MsgBox("O pedido selecionado já foi finalizado portanto, não é possível alterá-lo nem excluí-lo!", vbOKOnly, "PEDIDO JÁ FINALIZADO!") Else dataGridItensDoPedido.Rows.Clear() conexao.ConnectionString = (caminho_banco) conexao.Open() Dim adaptadorItensPedido As New OleDbDataAdapter("SELECT * FROM tabela_itensPedidoAofornecedor INNER JOIN tabela_produtoServico ON tabela_itensPedidoAofornecedor.id_produtoServico=tabela_produtoServico.id_produtoServico WHERE id_pedidoAofornecedor=" & dataGridPedidosAoFornecedor.CurrentRow.Cells(0).Value, conexao) Dim tabelaItensPedido As New DataTable adaptadorItensPedido.Fill(tabelaItensPedido) If tabelaItensPedido.Rows.Count > 0 Then For i = 0 To tabelaItensPedido.Rows.Count - 1 dataGridItensDoPedido.Rows.Add(tabelaItensPedido.Rows(i).Item("id_produtoServico", tabelaItensPedido.Rows(i).Item("nome_produtoServico"), FormatCurrency(tabelaItensPedido.Rows(i).Item("valor_unidade").ToString, 2), tabelaItensPedido.Rows(i).Item("qtdd_pedidoAoFornecedor").ToString) Next End If conexao.Close() End If End If E finalmente, o print do erro: Como podem ver, o erro ocorre quando tento preencher o dataGridView de itens do pedido e faço referencia ao campo "id_produtoServico" da tabela. O que mais acho estranho que é a união das tabelas funciona pois quando coloco um valor qualquer no lugar da referencia ao campo "id_produtoServico" para preencher o dataGridView de itens, o código funciona e dentre outros campos, também exibe o nome do produto que é um valor existente somente na tabela_produtoServico. Fico no aguardo por auxílio de alguém. Obs.: O Access é 2007 e o Visual Studio é 2010.