MOSTRAR QUAL COD. FOI SELECIONADO NO LISTVIEW.

USUARIO.EXCLUIDOS 01/03/2005 10:41:04
#70501
galera, eu tenho listview que onde carrego com todos os códigos de produto. E ao lado de cada código de produto possui um checkbox.
Como eu faço para saber qual código de pedido o usuário selecionou?
e aproveitando...
no banco eu tenho um campo chamado situacao que defini como sim/não.

então quando o usuário selecionar algum código de produto o campo situacao no banco ai ficar com o seu checkbox selecionado.

como eu faço para fazer essa atualização depois que o usuário selecionar o código de produto e clicar em alterar?

eu estou fazendo dessa maneira, mais ele me mostra sempre o mesmo código de produto e não está atualizando:

Dim strsql As String
Dim mensagem As Integer
On Error GoTo trata_erro
mensagem = MsgBox("Confirma a Alteração", vbQuestion + vbYesNo, "Confirmação")
Dim i As Integer
If mensagem = 6 Then

For i = 0 To lstMostra.ListItems.Count - 1
strsql = " UPDATE itens_pedido2 " & _
" SET situacao = '" & lstMostra.SelectedItem.Text & "' " & _
" WHERE codigo_produto = " & lstMostra.ListItems.Item(1) & " "
MsgBox strsql
Conexao.Execute strsql
Next
End If
Exit Sub

trata_erro:
MsgBox Err.Description

'MsgBox sql
'Open App.Path & "\SQL.txt" For Output As #1
'Print #1, sql
'Close #1
'db.Execute sql
'Set rs = db.OpenRecordset(sql)
'rs.Close

corrigem pra mim por favor o que estiver errado.

obrigado
USUARIO.EXCLUIDOS 01/03/2005 13:16:28
#70540
pessoal fiz um código para mostrar qual item foi selecionado, só que o que eu fiz está mostrando que selecionei tudo, sendo que selecionei apenas um um código de produto. vejam:

Dim X As Integer
Dim Mensagem As String

'faz um loop do primeiro ate o ultimo item do listview
For X = 1 To lstMostra.ListItems.Count

'se o item estiver selecionado
lstMostra.ListItems.Item(X).Selected = True

'adiciona numa variavel o texto do item
Mensagem = Mensagem & lstMostra.ListItems.Item(X).Text & Chr(13) & Chr(10)
'End If
Next

'verifica se você selecionou um item
If Mensagem <> "" Then
MsgBox "Você selecionou " & Mensagem
Else
MsgBox "Você não selecionou nenhum item"
End If
USUARIO.EXCLUIDOS 01/03/2005 14:26:34
#70556
e aí galera ninguém vai ajudar.

procurei aqui no fórum mais não tem.
THIAGO.CESAR 01/03/2005 14:54:44
#70564
Resposta escolhida
Rafa
Eu dei uma olhada rápida no seu código. Vai uma dica pra sintetizar.

Citação:


strsql = " UPDATE itens_pedido2 " & _
" SET situacao = '" & lstMostra.SelectedItem.Text & "' " & _
" WHERE codigo_produto = " & lstMostra.ListItems.Item(1) & " "



Dessa forma o campo situacao recebe o conteudo da primeira linha. Na verdade, deve receber 0 ou 1

Portanto:

Suponhamos que o código está na primeira coluna.

For i = 1 to ListView.ListItems.Count
if ListView.ListItems(i).Selected = True then
SQL = "Update itens_pedido2 Set situacao = 1 Where codigo_produto =" & ListView.ListItems(i).text
Next

USUARIO.EXCLUIDOS 01/03/2005 15:04:16
#70568
cara mais, como vou saber qual o código que o usuário selecionou?

e outra, ele pode selecionar um código quanlquer. esse código pode estar n aquinta linha por exemplo.

USUARIO.EXCLUIDOS 01/03/2005 15:15:08
#70570
cara está dando erro nessa linha:
sql = "Update itens_pedido2 Set situacao = 1 Where codigo_produto =" & lstMostra.ListItems(i).Text

não é esse 1?

no meu listview está todos os códigos de produto.

o situacao tem que ser de acordo com o que selecionei no listview. aí no banco esse campo vai ficar ticado.

lembrando que meu listview só tem uma coluna. que é cod produto

como faço?

me ajude, por favor.

THIAGO.CESAR 01/03/2005 15:23:44
#70572
Substitua
sql = "Update itens_pedido2 Set situacao = 1 Where codigo_produto =" & lstMostra.ListItems(i).Text
por
sql = "Update itens_pedido2 Set situacao = 1 Where codigo_produto =" & replace(lstMostra.ListItems(i).Key,"'","")

Poste aqui:
a) O código que está usando para preencher o listview
b) os campos do seu banco de dados
c) uns 3 dados de exemplo
d) coloque a sql pra ser impressa no debug e cole aqui também.

Assim já teremos mais noção pra te ajudar
USUARIO.EXCLUIDOS 01/03/2005 15:33:31
#70575
cara, continua dando erro no update.

mais vamos lá.

a) código que uso para preencher o listview:

Private Sub preenche_lista()
' ********************************************************
' ** FUNÇÃO QUE PREENCHE O LISTVIEW COM DADOS DO BANCO****
' ********************************************************
Dim Erro
On Error Resume Next
Tabela.Close
On Erro GoTo Trataerro
Tabela.Open "SELECT * FROM itens_pedido2", Conexao


lstMostra.ListItems.Clear
listview_cabecalho
'preenche o controle listview com os dados do recordset
'Do Until Tabela.EOF
Do While Not Tabela.EOF
Set Lista = lstMostra.ListItems.Add(, , Tabela("codigo_produto"))
'aqui verifico se o código do produto foi selecionado.
If Tabela!codigo_produto = 1 Then lstMostra.CheckBoxes = True
Lista.SubItems(1) = "" & Tabela("desconto")
Lista.SubItems(2) = "" & Tabela("qtde")
Lista.SubItems(3) = "" & Tabela("valor")
Lista.SubItems(4) = "" & Tabela("valor_bruto_i")
Tabela.MoveNext
Loop
Exit Sub
Trataerro:
MsgBox Err.Description, vbCritical, "Erro no sistema"
End Sub

b) campos do banco:
- codigo_produto = numero
- desconto = texto
- qtde = numero
- valor = texto
- valor_bruto_i = moeda
- valor_desconto_total_i = moeda
- valor_liquido_i = moeda
- situacao = sim/não

c) dados de exmplo:
código de produto = 355, 2863, 537

d) a sql usada não dá pra imprimir porque ele dá pau no update que vc me passou.

me ajudem, por favor. eu preciso muito disso.
ou me passem um exemplo que funcione.

valeu


THIAGO.CESAR 02/03/2005 08:21:25
#70668
Ok, vamos tentar fazer algo

Observe esse código
[txt-color=#ff0000]If Tabela!codigo_produto = 1 Then lstMostra.CheckBoxes = True [/txt-color]

Ou seja, na hora de carregar, se o código de um produto for igual a 1, você coloca checkboxes em todo o listview. Penso que sua intenção era checar a linha se ela foi selecionada, portanto
Set Lista = lstMostra.ListItems.Add(, , Tabela("codigo_produto")) 
'aqui verifico se o código do produto foi selecionado.
If Tabela!situacao = 1 Then Lista.Checked = True


Na hora de atualizar:
For i = 1 to lstMostra.ListItems.Count
SQL = "Update itens_pedido2 Set selecao = " & lstMostra.ListItems(i).Checked & Where codigo_produto = " & lstMostra.ListItems(i).Text
Next


Aguardo notícias...
THIAGO.CESAR 02/03/2005 08:23:51
#70670
Correção:
For i = 1 to lstMostra.ListItems.Count 
SQL = "Update itens_pedido2 Set selecao = " & lstMostra.ListItems(i).Checked & " Where codigo_produto = " & lstMostra.ListItems(i).Text
Next


Quanto ao Debug.Print, somente imprima a sql sem executá-la que não vai dar erro nenhum...
Tópico encerrado , respostas não são mais permitidas