FILTRAR DADOS NO LISTVIEW
Amigos,
Estou desenvolvendo uma aplicação com filtro por data no listview, entretanto ao filtrar os dados so é aceito quando o filtro é de um perÃodo longo, exemplo:
filtrando: 01 01 2010 a 01 01 2010 ele não retorna nada
filtrando: 01 01 2010 a 31 01 2010 ele retorna as informações do perÃodo
Public Sub preenche_lista()
On Error Resume Next
Dim newlist As ListItem
Dim vvalor1 As Currency
lista.ListItems.clear
vvalor1 = 0
Mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\dbase\sos.mdb[Ô]
Mycon.Open
Set myrs = New Recordset
myrs.Open [Ô]Select *From cob001 where vencimento between #[Ô] & Format(Me.mskInicial, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and #[Ô] & Format(Me.mskFinal, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and ligador = 1 and consolidado <> 1 order by vencimento[Ô], Mycon, adOpenForwardOnly, adLockReadOnly
Do Until myrs.EOF
Set newlist = lista.ListItems.Add(, [Ô] Key [Ô] & myrs([Ô]id[Ô]), myrs([Ô]id[Ô]))
newlist.SubItems(1) = [Ô][Ô] & myrs([Ô]Tipo[Ô])
newlist.SubItems(2) = [Ô][Ô] & myrs([Ô]nf[Ô])
newlist.SubItems(3) = [Ô][Ô] & myrs([Ô]duplicata[Ô])
newlist.SubItems(4) = [Ô][Ô] & myrs([Ô]cliente[Ô])
newlist.SubItems(5) = Format(myrs!vvalor, [Ô]##,###0.00[Ô])
newlist.SubItems(6) = Format(myrs!vencimento, [Ô]dd/mm/yyyy[Ô])
newlist.SubItems(7) = [Ô][Ô] & myrs([Ô]ligador[Ô])
newlist.SubItems(8) = [Ô][Ô] & myrs([Ô]parcial[Ô])
vvalor1 = (vvalor1 + myrs!vvalor)
Me.txtTotal.Text = Format(vvalor1, [Ô]currency[Ô])
Me.txtTotal.Enabled = False
myrs.MoveNext
Loop
saida:
Mycon.Close
Set myrs = Nothing
ErrAbrir:
With Err
If .number <> 0 Then
.number = 0
GoTo saida
End If
End With
End Sub
o banco de dados utilizado é o access
amigos, desde já agradeço.
Citação:Amigos,
Estou desenvolvendo uma aplicação com filtro por data no listview, entretanto ao filtrar os dados so é aceito quando o filtro é de um perÃodo longo, exemplo:
filtrando: 01 01 2010 a 01 01 2010 ele não retorna nada
filtrando: 01 01 2010 a 31 01 2010 ele retorna as informações do perÃodo
Boa noite....
Você está fazendo sua consulta desta forma
myrs.Open [Ô]Select *From cob001 where vencimento between #[Ô] & Format(Me.mskInicial, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and #[Ô] & Format(Me.mskFinal, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and ligador = 1 and consolidado <> 1 order by vencimento[Ô], Mycon, adOpenForwardOnly, adLockReadOnly
O que não seria muito legal até por não gostar muito do BETWEEN, eu ja prefiro usar os operadores, tipo data >= á AND <= á, mais ou menos assim:
myrs.Open [Ô]Select * From cob001 where vencimento >= #[Ô] & Format(Me.mskInicial, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and vencimento <= #[Ô] & Format(Me.mskFinal, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and ligador = 1 and consolidado <> 1 order by vencimento[Ô], Mycon, adOpenForwardOnly, adLockReadOnly
Testa ai e veja se funciona, ok??
fiz a sua atualização e funcionou perfeitamente para as datas acima do dia 10 para as datas inferiores, quando é feito a verificação, ele não encontra.
o problema está no armazenamento no banco de dados.
está arquivanfo como 3/3/2010 onde deveria ser 03/3/2010 ou 03/03/2010.
sabe me informar como formata-lo para que receba as informações da forma correta?
se possivel está conversão no vb6, pois eu uso maskara para os campos data.
não deve ser dd/mm/yyyy e sim mm/dd/yyyy
então tente a seguinte alteração
myrs.Open [Ô]Select *From cob001 where (vencimento between #[Ô] & Format(Me.mskInicial, [Ô]mm/dd/yyyy[Ô]) & [Ô]# and #[Ô] & Format(Me.mskFinal, [Ô]mm/dd/yyyy[Ô]) & [Ô]#) and ligador = 1 and consolidado <> 1 order by vencimento[Ô], Mycon, adOpenForwardOnly, adLockReadOnly
detalhe o campo vencimento, no banco deve ser do tipo data/hora para que funcione
Citação::
DANIKULL, obrigado pela resposta.
fiz a sua atualização e funcionou perfeitamente para as datas acima do dia 10 para as datas inferiores, quando é feito a verificação, ele não encontra.
o problema está no armazenamento no banco de dados.
está arquivanfo como 3/3/2010 onde deveria ser 03/3/2010 ou 03/03/2010.
sabe me informar como formata-lo para que receba as informações da forma correta?
se possivel está conversão no vb6, pois eu uso maskara para os campos data.
Boa tarde.
Pra resolver de uma vez este problema, converta as variáveis em data com cDate, assim:
myrs.Open [Ô]Select * From cob001 where CDate(vencimento) >= #[Ô] & CDate(Me.mskInicial) & [Ô]# and CDate(vencimento) <= #[Ô] & CDate(Me.mskFinal) & [Ô]# and ligador = 1 and consolidado <> 1 order by vencimento[Ô], Mycon, adOpenForwardOnly, adLockReadOnly
Ok???
Tenta ai de novo, qualquer coisa você posta ai que agente vai achar o erro pra ter ajudar.....
Obrigado pelas respostas.