ATUALIZAR LISTVIEW
Galera ja olhei dezenas de atualizações para listView mesmo assim não consigo atualizar a minha, desculpe me a persistencia no topico.
quando o último campo perde o foco ele deveria atualizar a listview. o que esta ocorrendo e que ele so atualiza na segunda tentativa, tipo lanço todos os dados e nada, quando acabo de lançar outro item ele atualiza o anterior. segue o código para melhor visualização:
Desde já agradeço pela tempo concedido.
quando o último campo perde o foco ele deveria atualizar a listview. o que esta ocorrendo e que ele so atualiza na segunda tentativa, tipo lanço todos os dados e nada, quando acabo de lançar outro item ele atualiza o anterior. segue o código para melhor visualização:
Private Sub txtQtde_LostFocus()
Dim Total As Currency
Dim cnnComando As New ADODB.Command
Dim Time As Date
'On Error GoTo ErrSAlvar
Time = Date
'
Total = Format(Total, "###,##0.00")
Total = Me.txtPreco
Me.txtSubTotal = Me.txtQtde * Total
Me.txtSubTotal.Text = Format(Me.txtSubTotal, "###,##0.00")
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnObjetivo
.CommandType = adCmdText
.CommandText = "Insert into tblVenda " & " (CodigoCliente, CodigoProduto, Qtde, Preco, Subtotal)Values('" & Me.txtCodigoCLiente.Text & "'," & "'" & Me.txtCodigoProduto.Text & "'," & "'" & Me.txtQtde.Text & "'," & "'" & Me.txtPreco.Text & "'," & "'" & Me.txtSubTotal.Text & "')"
.Execute
End With
Limpa
ListaVenda.ListItems.Clear
preenche_lista
ListaVenda.Refresh
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
ErrSAlvar:
With Err
If .Number <> 0 Then
MsgBox " Produto e ou cliente inexistente, verifique.", , "Objetivo"
.Number = 0
GoTo Saida
End If
End With
End Sub
Desde já agradeço pela tempo concedido.
são muitos dados cara ?
tenta utilizar esta api
Private Declare Function LockWindowUpdate Lib "user32.dll" _
(ByVal hWndLock As Long) As Long
tenta utilizar esta api
Private Declare Function LockWindowUpdate Lib "user32.dll" _
(ByVal hWndLock As Long) As Long
Private Sub txtQtde_LostFocus()
Dim Total As Currency
Dim cnnComando As New ADODB.Command
Dim Time As Date
'On Error GoTo ErrSAlvar
Time = Date
'
Total = Format(Total, "###,##0.00")
Total = Me.txtPreco
Me.txtSubTotal = Me.txtQtde * Total
Me.txtSubTotal.Text = Format(Me.txtSubTotal, "###,##0.00")
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnObjetivo
.CommandType = adCmdText
.CommandText = "Insert into tblVenda " & " (CodigoCliente, CodigoProduto, Qtde, Preco, Subtotal)Values('" & Me.txtCodigoCLiente.Text & "'," & "'" & Me.txtCodigoProduto.Text & "'," & "'" & Me.txtQtde.Text & "'," & "'" & Me.txtPreco.Text & "'," & "'" & Me.txtSubTotal.Text & "')"
.Execute
End With
Limpa
ListaVenda.ListItems.Clear
LockWindowUpdate ListaVenda.hwnd
preenche_lista
ListaVenda.Refresh
LockWindowUpdate 0
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
ErrSAlvar:
With Err
If .Number <> 0 Then
MsgBox " Produto e ou cliente inexistente, verifique.", , "Objetivo"
.Number = 0
GoTo Saida
End If
End With
End Sub
Daniel,
obrigado pela ajuda, mas eu não estou sabendo como usa-lo. poderia me informar mais sobre esta solução
obrigado pela ajuda, mas eu não estou sabendo como usa-lo. poderia me informar mais sobre esta solução
voce precisa declarar a api no inicio do projeto
esta api vai congelar o list e liberar ele somente depois do termino do processo
esta api vai congelar o list e liberar ele somente depois do termino do processo
Daniel,
Sou iniciante em programação e continuo ñ entendendo.
esta api e private logo devo coloca-la no frm que esta ativo. mas ela me retorna uma instrução de erro.
eu a declarei como public e a coloquei em um modulo.bas
e ela continuou com o mesmo problema supra citado "quando o último campo perde o foco ele deveria atualizar a listview. o que esta ocorrendo e que ele so atualiza na segunda tentativa, tipo lanço todos os dados e nada, quando acabo de lançar outro item ele atualiza o anterior"
Sou iniciante em programação e continuo ñ entendendo.
esta api e private logo devo coloca-la no frm que esta ativo. mas ela me retorna uma instrução de erro.
eu a declarei como public e a coloquei em um modulo.bas
e ela continuou com o mesmo problema supra citado "quando o último campo perde o foco ele deveria atualizar a listview. o que esta ocorrendo e que ele so atualiza na segunda tentativa, tipo lanço todos os dados e nada, quando acabo de lançar outro item ele atualiza o anterior"
coloca a sua rotina de preenche_lista aqui pra dar uma olhada
Private Sub preenche_lista()
vValor1 = 0
Me.ListaVenda.ListItems.Clear
scnn = cnnObjetivo
Set rst = New Recordset
rst.Open "Select *from tblVenda Where Fechado = 0 ", scnn, adOpenForwardOnly, adLockReadOnly
Do Until rst.EOF
Set NewList = ListaVenda.ListItems.Add(, " Key " & rst("Codigo"), rst("Codigo"))
NewList.SubItems(1) = "" & rst("CodigoCliente")
NewList.SubItems(2) = "" & rst("CodigoProduto")
NewList.SubItems(3) = "" & rst("Qtde")
NewList.SubItems(4) = "" & rst("Preco")
NewList.SubItems(5) = "" & rst("SubTotal")
'NewList.SubItems(4) = Format(!Preco, "Currency")
'NewList.SubItems(5) = Format(!Subtotal, "Currency")
vValor1 = (vValor1 + rst!Subtotal)
Me.txtTotal.Text = Format(vValor1, "Currency")
Me.txtTotal.Enabled = False
rst.MoveNext
Loop
rst.Requery 1
rst.Close
Set rst = Nothing
End Sub
Daniel esta e a rotina para preencher a lista lembrando que quando eu abro o frm eu preencho ela.
vValor1 = 0
Me.ListaVenda.ListItems.Clear
scnn = cnnObjetivo
Set rst = New Recordset
rst.Open "Select *from tblVenda Where Fechado = 0 ", scnn, adOpenForwardOnly, adLockReadOnly
Do Until rst.EOF
Set NewList = ListaVenda.ListItems.Add(, " Key " & rst("Codigo"), rst("Codigo"))
NewList.SubItems(1) = "" & rst("CodigoCliente")
NewList.SubItems(2) = "" & rst("CodigoProduto")
NewList.SubItems(3) = "" & rst("Qtde")
NewList.SubItems(4) = "" & rst("Preco")
NewList.SubItems(5) = "" & rst("SubTotal")
'NewList.SubItems(4) = Format(!Preco, "Currency")
'NewList.SubItems(5) = Format(!Subtotal, "Currency")
vValor1 = (vValor1 + rst!Subtotal)
Me.txtTotal.Text = Format(vValor1, "Currency")
Me.txtTotal.Enabled = False
rst.MoveNext
Loop
rst.Requery 1
rst.Close
Set rst = Nothing
End Sub
Daniel esta e a rotina para preencher a lista lembrando que quando eu abro o frm eu preencho ela.
bom faz assim cara adiciona um DoEvents logo após o Do Until e coloca essa na primeira linha do seu form_load coloca o codigo me.show no topo do projeto coloca essa declaração de API
e troca sua rotina do preenche lista para
Private Declare Function LockWindowUpdate Lib "user32.dll" (ByVal hWndLock As Long) As Long
e troca sua rotina do preenche lista para
Private Sub preenche_lista()
LockWindowUpdate ListaVenda.hwnd
vValor1 = 0
Me.ListaVenda.ListItems.Clear
scnn = cnnObjetivo
Set rst = New Recordset
rst.Open "Select *from tblVenda Where Fechado = 0 ", scnn, adOpenForwardOnly, adLockReadOnly
Do Until rst.EOF
Set NewList = ListaVenda.ListItems.Add(, " Key " & rst("Codigo"), rst("Codigo"))
NewList.SubItems(1) = "" & rst("CodigoCliente")
NewList.SubItems(2) = "" & rst("CodigoProduto")
NewList.SubItems(3) = "" & rst("Qtde")
NewList.SubItems(4) = "" & rst("Preco")
NewList.SubItems(5) = "" & rst("SubTotal")
'NewList.SubItems(4) = Format(!Preco, "Currency")
'NewList.SubItems(5) = Format(!Subtotal, "Currency")
vValor1 = (vValor1 + rst!Subtotal)
Me.txtTotal.Text = Format(vValor1, "Currency")
Me.txtTotal.Enabled = False
rst.MoveNext
Loop
rst.Requery 1
rst.Close
Set rst = Nothing
LockWindowUpdate 0
End Sub
continua o mesmo problema.
CHSTDRK, faz o seguinte, primeira pergunta, este campo fechado, quando vc insere ele realmente esta como 0 ?
segundo: tente usar while e na until , segue abaixo
while not rst.EOF
Set NewList = ListaVenda.ListItems.Add(, " Key " &
rst("Codigo"), rst("Codigo"))
NewList.SubItems(1) = "" & rst("CodigoCliente")
NewList.SubItems(2) = "" & rst("CodigoProduto")
NewList.SubItems(3) = "" & rst("Qtde")
NewList.SubItems(4) = "" & rst("Preco")
NewList.SubItems(5) = "" & rst("SubTotal")
vValor1 = (vValor1 + rst!Subtotal)
Me.txtTotal.Text = Format(vValor1, "Currency")
Me.txtTotal.Enabled = False
rst.MoveNext
wend
segundo: tente usar while e na until , segue abaixo
while not rst.EOF
Set NewList = ListaVenda.ListItems.Add(, " Key " &
rst("Codigo"), rst("Codigo"))
NewList.SubItems(1) = "" & rst("CodigoCliente")
NewList.SubItems(2) = "" & rst("CodigoProduto")
NewList.SubItems(3) = "" & rst("Qtde")
NewList.SubItems(4) = "" & rst("Preco")
NewList.SubItems(5) = "" & rst("SubTotal")
vValor1 = (vValor1 + rst!Subtotal)
Me.txtTotal.Text = Format(vValor1, "Currency")
Me.txtTotal.Enabled = False
rst.MoveNext
wend
outra coisa, se nao der certo tente a abrir o recordset assim:
rst.Open "Select *from tblVenda Where Fechado = 0", cn, adOpenStatic, adLockOptimistic
e nao assim
rst.Open "Select *from tblVenda Where Fechado = 0 ", scnn, adOpenForwardOnly, adLockReadOnly
rst.Open "Select *from tblVenda Where Fechado = 0", cn, adOpenStatic, adLockOptimistic
e nao assim
rst.Open "Select *from tblVenda Where Fechado = 0 ", scnn, adOpenForwardOnly, adLockReadOnly
Tópico encerrado , respostas não são mais permitidas