Ir para conteúdo
Fórum Script Brasil
  • 0

Consultar dois campos na mesma tabela


Almarante

Pergunta

Olá pessoal

Estou criando um form que me traz os campos de uma tabela "ItensPedido" selecionado em um listvew.

Depois no botão editar faço uma cosulta pelo número do pedido, porem cada pedido possuem vários itens. só altera do primeiro item, então acredito que a cosulta deva ser o número do pedido mais item.

estou fazendo desta forma baixo e dá erro de operador faltando.

Let busca = frmPedidosCompras.txtNumerodoPedido.text
       AdoItensPedido.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & stCaminhoBD
       AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido '" + busca + "AND" + txtItem.text + "'"
       AdoItensPedido.Refresh
       AdoItensPedido.Recordset.Filter = "Tipo = " & 2

       If frmPedidosCompras.txtNumerodoPedido.text = busca Then
                
                valitem = qtd * valunit
                txtTotalItem.text = valitem
                AdoItensPedido.Recordset("ValTotal") = valitem
                AdoItensPedido.Recordset("CodProd") = txtCodprod.text
                AdoItensPedido.Recordset("Descricao") = txtDescricao.text
                AdoItensPedido.Recordset("Unidade") = txtUnidade.text
                AdoItensPedido.Recordset("Indice") = indice
                AdoItensPedido.Recordset("Comissao") = txtComissao.text
                AdoItensPedido.Recordset("Quantidade") = qtd
                valunit = Format(Format(valunit), "R$ ##,##0.00")
                AdoItensPedido.Recordset("ValUnitario") = valunit
                AdoItensPedido.Recordset.Update
                AdoItensPedido.Recordset.MoveNext
                AdoItensPedido.Recordset.MovePrevious
       
       End If

Apoveitando o tópico, depois de salva as alterações deverar atualizar o listvew, como faço pra chamar a sub Preenche_Lista que está em outro Form?

Desde já Agradeço

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Só explica uma coisa...os ítens ficam salvo em outro campo do Banco de Dados ?

Assim: o número do pedido ta salvo no campo "NPedido"... e os ítens ???

Pois assim bastava configurar seu SELECT informando o número do pedido "e" número (ou nome, seja lá o que for...) do ítem...

ficaria mais ou menos assim:

AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido='" & Numero_do_Item & "' AND NItem='" & vItem & "'"
Sem falar que realmente você esqueceu dois operadores nessa mesma linha...o "=" (igual) e o " ' " (apóstrofo). corrigido:
AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido=" + busca + " AND '" + txtItem.text + "'"

Estou julgando que "busca" é um valor do tipo numérico e o conteúdo do "txtItem.Text" do tipo texto.

Link para o comentário
Compartilhar em outros sites

  • 0
Só explica uma coisa...os ítens ficam salvo em outro campo do Banco de Dados ?

Assim: o número do pedido ta salvo no campo "NPedido"... e os ítens ???

Pois assim bastava configurar seu SELECT informando o número do pedido "e" número (ou nome, seja lá o que for...) do ítem...

ficaria mais ou menos assim:

AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido='" & Numero_do_Item & "' AND NItem='" & vItem & "'"
Sem falar que realmente você esqueceu dois operadores nessa mesma linha...o "=" (igual) e o " ' " (apóstrofo). corrigido:
AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido=" + busca + " AND '" + txtItem.text + "'"

Estou julgando que "busca" é um valor do tipo numérico e o conteúdo do "txtItem.Text" do tipo texto.

Danleonhart primeiro obrigado pela ajuda.

Respondendo a sua primeira pergunta, NPedido é um campo e Item é outro campo da tabela ItensPedido, e os dois campos são do tipo texto.

testei o segundo exemplo e deu "TIPO DE DADOS INCOPATIVEL COM A EXPRESSÃO DE CRITERIO"

Link para o comentário
Compartilhar em outros sites

  • 0

OK !

Então, você trata dados do tipo numérico (Integer, Double, Long, Single...) somente com " " (aspas)...agora se for texto (String) tem de colocar ' ' (apóstrofos) e " " (aspas)...

Se a segunda deu este erro, é porque na variavel "busca" está faltando os apóstrofos...

AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido='" + busca + "' AND '" + txtItem.text + "'"

Tente agora...

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu danleonhart, Não da mais o erro, mas ainda não altera os dados dos outro itens que não seja o primeiro, vou colocar abaixo todo código do botão editar.

No form Pedidos de compras tem botão editar itens, ao clicar nele abre um form editar itens de pedido com todos os campos previamente selecionados no listview, então

eu altero o dado que for nescessário, mas na hora de salvar na tabela nada acontece, o código do botão editar segue abaixo.

Private Sub cmdEditar_Click()
 Dim TotalPed As Single
 Dim ali As Integer
 Dim Base As Single
 Dim Valicms As Single
 Dim indice As Single
 Dim qtd As Single
 Dim valunit As Single
 Dim valitem As Single
 Dim totindice As Single
 Dim aliIPI As Single
 Dim valipi As Single
 Dim base1 As String
 Dim busca As String
 Dim valindice As Single
                TotalPed = frmPedidosCompras.txtTotaldoPedido.text
                ali = frmPedidosCompras.txtICMS.text
                Base = frmPedidosCompras.txtBaseICMS.text
                Valicms = frmPedidosCompras.txtValorICMS.text
                indice = txtIndice.text
                qtd = txtQuantidade.text
                valunit = txtValUnitario.text
                valitem = txtTotalItem.text
                totindice = frmPedidosCompras.txtTotalIndice.text
                base1 = frmPedidosCompras.cboBase1.text
                valindice = txtValIndice.text
       
       Let busca = frmPedidosCompras.txtNumerodoPedido.text
       AdoPedido.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & stCaminhoBD
       AdoPedido.RecordSource = "SELECT * FROM Pedido WHERE NPedido LIKE '" + busca + "'"
       AdoPedido.Refresh
       AdoPedido.Recordset.Filter = "Tipo = " & 2
       If frmPedidosCompras.txtNumerodoPedido.text = busca Then
       
          TotalPed = TotalPed - valitem
          valindice = qtd * indice
          totindice = totindice - (valindice * qtd)
          AdoPedido.Recordset("TotalPedido") = TotalPed
          AdoPedido.Recordset("TotalIndice") = totindice
          AdoPedido.Recordset.Update
          AdoPedido.Recordset.MoveNext
          AdoPedido.Recordset.MovePrevious
       End If
       
       
       
       Let busca = frmPedidosCompras.txtNumerodoPedido.text
       AdoItensPedido.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & stCaminhoBD
       AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido='" + busca + "' AND '" & txtItem.text & "'"
       AdoItensPedido.Refresh
       AdoItensPedido.Recordset.Filter = "Tipo = " & 2

       If frmPedidosCompras.txtNumerodoPedido.text = busca Then
                
                valitem = qtd * valunit
                txtTotalItem.text = valitem
                AdoItensPedido.Recordset("ValTotal") = valitem
                AdoItensPedido.Recordset("CodProd") = txtCodProd.text
                AdoItensPedido.Recordset("Descricao") = txtDescricao.text
                AdoItensPedido.Recordset("Unidade") = txtUnidade.text
                AdoItensPedido.Recordset("Indice") = indice
                AdoItensPedido.Recordset("Comissao") = txtComissao.text
                AdoItensPedido.Recordset("Quantidade") = qtd
                valunit = Format(Format(valunit), "R$ ##,##0.00")
                AdoItensPedido.Recordset("ValUnitario") = valunit
                AdoItensPedido.Recordset.Update
                AdoItensPedido.Recordset.MoveNext
                AdoItensPedido.Recordset.MovePrevious
       
       End If
           
       Let busca = frmPedidosCompras.txtNumerodoPedido.text
       AdoPedido.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & stCaminhoBD
       AdoPedido.RecordSource = "SELECT * FROM Pedido WHERE NPedido LIKE '" + busca + "'"
       AdoPedido.Refresh
       AdoPedido.Recordset.Filter = "Tipo = " & 2

       If frmPedidosCompras.txtNumerodoPedido.text = busca Then
       
       TotalPed = TotalPed + valitem
       'valindice = indice * qtd
       'txtValIndice.text = valindice
       'totindice = totindice + valindice '(indice * qtd)
      frmPedidosCompras.txtTotaldoPedido.text = TotalPed
      frmPedidosCompras.txtTotalIndice.text = totindice
       
           If base1 = "Reduzida" Then
              Base = (TotalPed / 3) * 2
        '
              Valicms = Base / 100 * ali
         '
           Else
              Valicms = TotalPed / 100 * ali
          '    frmPedidosCompras.txtValorICMS.text = Valicms
           End If
       AdoPedido.Recordset("ValBase") = Base
       AdoPedido.Recordset("ValICMS") = Valicms
       TotalPed = Format(Format(TotalPed), "R$ ##,##0.00")
       AdoPedido.Recordset("TotalPedido") = TotalPed
       totindice = Format(Format(totindice), "R$ ##,##0.00")
       'AdoPedido.Recordset("TotalIndice") = totindice
       AdoPedido.Recordset.Update
       AdoPedido.Recordset.MoveNext
       AdoPedido.Recordset.MovePrevious
    End If
               
          
     
   Unload frmPedidosCompras
   Unload frmEditarItensPedidoCompras
   'Preenche_Lista
   frmPedidosCompras.Show
   frmPedidosCompras.sstabPedidoCompra.Tab = 1
   frmPedidosCompras.Move (Screen.Width - frmPedidosCompras.Width) / 2, (Screen.Height - frmPedidosCompras.Height) / 2
   frmPedidosCompras.Top = 200
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0
Só explica uma coisa...os ítens ficam salvo em outro campo do Banco de Dados ?

Assim: o número do pedido ta salvo no campo "NPedido"... e os ítens ???

Pois assim bastava configurar seu SELECT informando o número do pedido "e" número (ou nome, seja lá o que for...) do ítem...

ficaria mais ou menos assim:

AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido='" & Numero_do_Item & "' AND NItem='" & vItem & "'"
Sem falar que realmente você esqueceu dois operadores nessa mesma linha...o "=" (igual) e o " ' " (apóstrofo). corrigido:
AdoItensPedido.RecordSource = "SELECT * FROM ItensPedido WHERE NPedido=" + busca + " AND '" + txtItem.text + "'"

Estou julgando que "busca" é um valor do tipo numérico e o conteúdo do "txtItem.Text" do tipo texto.

Danleonhart primeiro obrigado pela ajuda.

Respondendo a sua primeira pergunta, NPedido é um campo e Item é outro campo da tabela ItensPedido, e os dois campos são do tipo texto.

testei o segundo exemplo e deu "TIPO DE DADOS INCOPATIVEL COM A EXPRESSÃO DE CRITERIO"

Olá, Danleonhart

esta eu consegui acharonde eu estava errando, e já resolvi obrigado pela força

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...