AJUDA COM LISTVIEW VB6

ROBSON220BASS 10/02/2010 15:18:05
#334102
tenho um controle listview que lista todas as parcelas que estao abertas, porem preciso que ao o usuario
marcar um ou mais checkboxs no controle listview, e depois precionar um botao especifico (Salvar)

todos os registro que foram marcados no ctrl listview serao alterados no bd, somente os que foram marcados...


este codigo porem so altera a primeira linha:

Private Sub cmdsalvar_Click()
Dim cmdgravar As New ADODB.Command
Dim I As Long

For I = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems(I).Checked = True Then

With cmdgravar
Set .ActiveConnection = CnConect
.CommandType = adCmdText
.Prepared = True
.CommandText = [Ô]update detalhes_contas_pagar set vl_pago= ?, pago=?, dtalter=? where id=[Ô] & CInt(Me.ListView1.ListItems(I).Text) & [Ô][Ô]

.Parameters.Append .CreateParameter([Ô]vl_pago[Ô], adCurrency, adParamInput)
.Parameters.Append .CreateParameter([Ô]pago[Ô], adSingle, adParamInput)
.Parameters.Append .CreateParameter([Ô]dtalter[Ô], adDate, adParamInput)



.Parameters([Ô]vl_pago[Ô]) = CCur(Me.ListView1.ListItems(I).SubItems(2))
.Parameters([Ô]pago[Ô]) = True
.Parameters([Ô]dtalter[Ô]) = Format(Now, [Ô]dd/mm/yyyy[Ô])

.Execute

MsgBox [Ô]Gravado Com Sucesso![Ô], vbInformation
ListView1.Refresh

localizaIDTPContas
localizaIDForn
Preencher_Listview
MontarListaParcPagas


SomaVlPago
If Err.Number <> 0 Then
MostraErro
End If
End With

Set cmdgravar = Nothing

Else
Exit Sub
End If

Next I
End Sub


alguem pode me ajudar?

Obrigado!
LROSSI 10/02/2010 16:08:31
#334110
for i =0 to lstlist.listitems.conut
if lstlist.listitems(i).cheked =true then
bota seu código de salvar aqui...
end if

next i
ROBSON220BASS 10/02/2010 16:27:45
#334111
deu erro :

Run-time error [ô]35600[ô]
Index out of bounds

e esta apontando para linha

If ListView1.ListItems(I).Checked = True Then

o que pode ser?.. desculpa amigo mas sou junior ainda.. agradeço a colaboraçao
LROSSI 10/02/2010 16:48:00
#334114
Resposta escolhida
tenta i -1 e v c resolve
FUTURA 10/02/2010 16:51:44
#334115
CARA COMEÇA O FOR NEXT NO 1, TIPO

FOR I = 1 TO SEULIST.LISTITEMS.COUNT
IF CHECADO THEN
FAÇA TAL
ENDIF
NEXT


ROBSON220BASS 10/02/2010 18:30:32
#334124
pessoal encontrei a solucao

o problema estava aqui:

Private Sub cmdsalvar_Click()
Dim cmdgravar As New ADODB.Command
Dim I As Long

For I = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems(I).Checked = True Then

With cmdgravar
Set .ActiveConnection = CnConect
.CommandType = adCmdText
.Prepared = True
.CommandText = [Ô]update detalhes_contas_pagar set vl_pago= ?, pago=?, dtalter=? where id=[Ô] & CInt(Me.ListView1.ListItems(I).Text) & [Ô][Ô]

.Parameters.Append .CreateParameter([Ô]vl_pago[Ô], adCurrency, adParamInput)
.Parameters.Append .CreateParameter([Ô]pago[Ô], adSingle, adParamInput)
.Parameters.Append .CreateParameter([Ô]dtalter[Ô], adDate, adParamInput)



.Parameters([Ô]vl_pago[Ô]) = CCur(Me.ListView1.ListItems(I).SubItems(2))
.Parameters([Ô]pago[Ô]) = True
.Parameters([Ô]dtalter[Ô]) = Format(Now, [Ô]dd/mm/yyyy[Ô])

.Execute
[ô]-----------------------------------------------------------------
MsgBox [Ô]Gravado Com Sucesso![Ô], vbInformation -
ListView1.Refresh -
-
localizaIDTPContas - aqui esta o erro.
localizaIDForn -
Preencher_Listview -
MontarListaParcPagas -
[ô]----------------------------------------------------------------

SomaVlPago
If Err.Number <> 0 Then
MostraErro
End If
End With

Set cmdgravar = Nothing

Else
Exit Sub
End If

Next I
End Sub
[ô]------------------------------------------------
isso faz o sistema atualizar o listview e a tabela do bd...

ele percorria a lista, atualizava o primeiro registro, porem atualizava os registro do listview e desmarcava os checkboxs ...

entao so fazia a coisa certa somente no primeiro registro, pois quando ele passava novamente ja nao tinha nada marcado mais...

entenderao?

agradeço a colaboracao de vcs...

obrigado!
PEGUDO 10/02/2010 19:35:26
#334125
Olá amigo,
fico feliz que tenha encontrado a solução.
Por favor encerre o tópico.

Abraços
Tópico encerrado , respostas não são mais permitidas