Jump to content
Fórum Script Brasil
  • 0

Consultar dois campos na mesma tabela


Almarante

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

Oi, gostaria que se alguém souber me ajude a solucionar um problema que deve ser simples eu acho:

- COMO COMPARAR 2 (DOIS) REGISTROS NA MESMA TABELA , exemplo:

** comparar o campo CODIGO registro 01 com o campo CODIGO registro 02

* É isso.

Desde já agradeço!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...