UPDATE COM LOOP NO LISTVIEW
Boa Tarde pessoal
Preciso fazer um update numa tabela, baseado nos itens marcados num listview
A ideia seria consultar na tabela Usuario, o [Ô]Usuario[Ô] com o campo [Ô]Login[Ô] igual ao exibido no [Ô]combo1[Ô]
Ai baseado nos checkbox marcado do listview de cada linha, ele iria atualizar os campos na tabela USUARIO daquele [Ô]login=combo1[Ô]
Fiz mais ou menos assim, mais nao dar certo,
O que tá faltando?
uso VB6 + SQLServer2008
Preciso fazer um update numa tabela, baseado nos itens marcados num listview
A ideia seria consultar na tabela Usuario, o [Ô]Usuario[Ô] com o campo [Ô]Login[Ô] igual ao exibido no [Ô]combo1[Ô]
Ai baseado nos checkbox marcado do listview de cada linha, ele iria atualizar os campos na tabela USUARIO daquele [Ô]login=combo1[Ô]
Fiz mais ou menos assim, mais nao dar certo,
O que tá faltando?
UPDATE usuario SET WHERE (login = [ô][Ô] & Combo1 & [Ô][ô])
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems.Item(i).Text = [Ô]Clientes - Inclusão[Ô] Then
rsUsuario.Fields([Ô]cliinc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Clientes - Alteração[Ô] Then
rsUsuario.Fields([Ô]clialt[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Clientes - Exclusão[Ô] Then
rsUsuario.Fields([Ô]cliexc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Produtos - Inclusão[Ô] Then
rsUsuario.Fields([Ô]prodinc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Produtos - Alteração[Ô] Then
rsUsuario.Fields([Ô]prodalt[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Produtos - Exclusão[Ô] Then
rsUsuario.Fields([Ô]prodexc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
End If
Next
rsUsuario.Update
uso VB6 + SQLServer2008
Use o próprio Lstviiew para faze o Update.
Verifica este exemplo e faz modificação ao seu gosto.
Citação::
Verifica este exemplo e faz modificação ao seu gosto.
basicamente o exemplo é de exemplos de exibição no listview... no meu caso seria edição:
A Ideia seria exibir dados no listview, marcar/desmarcar o que quiser, e depois clicar no botão para salvar... entao fiz assim:
Public Sub ListarUsuario()
Dim sSQL As String
sSQL = [Ô]SELECT *, login, codigo FROM usuario ORDER BY codigo[Ô]
Set rsUsuario = dbData.OpenRecordset(sSQL)
Do While Not rsUsuario.EOF
cboLogin.AddItem rsUsuario.Fields([Ô]login[Ô])
cboLogin.ItemData(cboLogin.NewIndex) = rsUsuario([Ô]codigo[Ô])
rsUsuario.MoveNext
Loop
End Sub
Private Sub Command1_Click()
If MsgBox([Ô]Confirma a alteração no perfil de acesso?[Ô], vbQuestion + vbYesNo + vbDefaultButton2, [Ô]Controle de Acesso[Ô]) = vbYes Then
rsUsuario.MoveFirst
rsUsuario.Find [Ô]login=[ô][Ô] & cboLogin & [Ô][ô][Ô]
If Not rsUsuario.EOF Then
Call GravarAcesso
Else
MsgBox [Ô]Ocorreu um erro ao localizar usuário![Ô], vbExclamation, [Ô]Acesso[Ô]
End If
End If
End Sub
Sub GravarAcesso()
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems.Item(i).Text = [Ô]Clientes - Inclusão[Ô] Then
rsUsuario.Fields([Ô]cliinc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Clientes - Alteração[Ô] Then
rsUsuario.Fields([Ô]clialt[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Clientes - Exclusão[Ô] Then
rsUsuario.Fields([Ô]cliexc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Produtos - Inclusão[Ô] Then
rsUsuario.Fields([Ô]prodinc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Produtos - Alteração[Ô] Then
rsUsuario.Fields([Ô]prodalt[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
ElseIf ListView1.ListItems.Item(i).Text = [Ô]Produtos - Exclusão[Ô] Then
rsUsuario.Fields([Ô]prodexc[Ô]) = IIf(ListView1.ListItems.Item(i).Checked = True, [Ô]1[Ô], [Ô]0[Ô])
End If
Next
rsUsuario.Update
MsgBox [Ô]Perfil de acesso cadastrado![Ô], vbInformation, [Ô]Perfil[Ô]
End Sub
o erro tá dando na subrotina GravarAcesso, pois ela diz que o comando que tô usando não permita [Ô]atualizar[Ô] os dados
Que tipo de campo da tabela é
rsUsuario.Fields([Ô][txt-color=#e80000]cliinc[/txt-color][Ô])
rsUsuario.Fields([Ô][txt-color=#e80000]clialt[/txt-color][Ô])
rsUsuario.Fields([Ô][txt-color=#e80000]cliinc[/txt-color][Ô])
rsUsuario.Fields([Ô][txt-color=#e80000]clialt[/txt-color][Ô])
Citação::
Que tipo de campo da tabela é
rsUsuario.Fields([Ô][txt-color=#e80000]cliinc[/txt-color][Ô])
rsUsuario.Fields([Ô][txt-color=#e80000]clialt[/txt-color][Ô])
tipo: int
O projeto que lhe enviei você consegue editar uma célula do Listiview.
Executa e clica no terceiro botão e tenta editar clicando em Stock e Baja.
Usei e modifiquei deste jeito para editar com checkbox sim ou não,accesse.
Private Sub Command7_Click()
On Error GoTo error_Sub
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open [Ô]Select * from perfis[Ô], conexao, adOpenStatic, adLockOptimistic
rs.MoveFirst
Dim item As ListItem
Dim i As Integer
While Not rs.EOF
i = i + 1
Set item = ListView1.ListItems(i)
If ListView1.ListItems.item(i).Checked Then
rs(5) = 1
rs(6) = 1
rs(7) = 1
rs(8) = 1
rs(9) = 1
[ô] rs(6) = 1
rs.Update
rs.MoveNext
Else
rs(5) = 0
rs(6) = 0
rs(7) = 0
rs(8) = 0
rs(9) = 0
[ô]rs(6) = 1
rs.Update
rs.MoveNext
End If
Wend
rs.Close
Set rs = Nothing
Exit Sub
error_Sub:
MsgBox Err.Description
End Sub
Executa e clica no terceiro botão e tenta editar clicando em Stock e Baja.
Usei e modifiquei deste jeito para editar com checkbox sim ou não,accesse.
Private Sub Command7_Click()
On Error GoTo error_Sub
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open [Ô]Select * from perfis[Ô], conexao, adOpenStatic, adLockOptimistic
rs.MoveFirst
Dim item As ListItem
Dim i As Integer
While Not rs.EOF
i = i + 1
Set item = ListView1.ListItems(i)
If ListView1.ListItems.item(i).Checked Then
rs(5) = 1
rs(6) = 1
rs(7) = 1
rs(8) = 1
rs(9) = 1
[ô] rs(6) = 1
rs.Update
rs.MoveNext
Else
rs(5) = 0
rs(6) = 0
rs(7) = 0
rs(8) = 0
rs(9) = 0
[ô]rs(6) = 1
rs.Update
rs.MoveNext
End If
Wend
rs.Close
Set rs = Nothing
Exit Sub
error_Sub:
MsgBox Err.Description
End Sub
Tópico encerrado , respostas não são mais permitidas