Ir para conteúdo
Fórum Script Brasil

dragonsday

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Sobre dragonsday

dragonsday's Achievements

0

Reputação

  1. 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.
  2. Graymalkin, obrigado pelo auxílio. Problema resolvido. Fico até com vergonha de postar essa cag#$* minha - rsrsrsrsrs - mas o que ocorreu era que no banco, ao criar os nomes dos campos, após o sinal de underline, acabei sem perceber inserindo um espaço entre ele e a ultima palavra como em "nome_ produtoServico". No próprio código sql que postei aqui tem esse erro já que copiei os nomes dos campos diretamente da janela do Access. De toda forma muito obrigado pela preocupação em ajudar. Abraço.
  3. Acabei de tentar uma modificação na tabela baseado na sua dica mudando todos os campos da tabela para texto e manter as aspas simples no código sql mas o erro é o mesmo. Começo a pensar que deve ser algum bug do Visual Studio porque não vejo lógica no que está acontecendo.
  4. Sim Graymalkin, na tabela tem campos numéricos porém, há campos numéricos em outras tabelas para as quais o código funcionou mesmo com aspas. Até tentei a sua sugestão mas o mesmo erro persiste. Desde já agradeço sua atenção e a de quem mais se dispuser a colaborar.
  5. Não sei o que está acontecendo pois o código para cadastrar registro abaixo já usei para vários outros formulário e deu tudo certo porém, nesse último, tem dado o erro "Erro de sintaxe na instrução INSERT INTO". OBS.: O código do comando Sql não possue quebra de linhas como aparece no texto abaixo. Segue abaixo o código: Imports System.Data.OleDb Public Class formCadProdServ Dim SSQL As String 'criamos uma instância da classe oleDbConnection para efetuarmos a 'conexão com o banco quando preciso Dim conexao As New OleDbConnection() 'criamos a variável para executarmos o comando sql Dim comando As OleDbCommand 'variável que guarda o caminho do banco de dados Dim caminho_banco As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\dogStar\clinica_veterinaria.accdb;Persist Security Info=False;" Private Sub btnCadastrarProdServ_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCadastrarProdServ.Click conexao.ConnectionString = (caminho_banco) conexao.Open() SSQL = "INSERT INTO tabela_produtoServico( nome_ produtoServico, valorFornecedor, valorFinal, qttd_estoque, tipo_produtoServico, cod_barras, id_fornecedor, descricao_produtoServico) VALUES ( '" & Me.txtNomeProdServ.Text & "','" & Me.txtValorFornecedorProdServ.Text & "','" & Me.txtValorFinalProdServ.Text & "','" & Me.txtQtdProdServ.Text & "','" & Me.comboTipoProdServ.Text & "','" & Me.txtCodBarrasProdServ.Text & "','" & Me.txtIdFornecedor.Text & "','" & Me.txtDescricaoProdServ.Text & "')" comando = conexao.CreateCommand comando.CommandText = SSQL comando.ExecuteNonQuery() MsgBox("Produto cadastrado com sucesso!", vbOKOnly, "CADASTRO OK!") conexao.close() end sub End Class
×
×
  • Criar Novo...