LOOP NAO FUNCIONAR

MOREIRA 13/04/2012 16:47:28
#399825
galera, confesso que , nao o por que esse sql nao está pegando as informações correta

somar as contas em atraso...

o que está errado com esse treco;

Dim DtSistemas As Date

Set Rst = New ADODB.Recordset
Sql = [Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Stat_Desc =[ô]A Pagar[ô] Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]
Rst.Open Sql, Conexao, 3

If Not Rst.EOF Then
Do While Not Rst.EOF
If Rst!Dt_Venct < Format(DtSistemas, [Ô]dd/mm/yyyy[Ô]) Then
LblLancVncds.Caption = [Ô][Ô] & Format(Rst!Valor, [Ô]###,##0.00[Ô])

Exit Sub
End If
Rst.MoveNext
Loop
End If



LUIZCOMINO 13/04/2012 16:54:54
#399826
Dim DtSistemas As Date

Set Rst = New ADODB.Recordset
Sql = [Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Stat_Desc =[ô]A Pagar[ô] Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]
Rst.Open Sql, Conexao, 3

If Not Rst.EOF Then
Do While Not Rst.EOF
If Rst!Dt_Venct < Format(DtSistemas, [Ô]dd/mm/yyyy[Ô]) Then
LblLancVncds.Caption = [Ô][Ô] & Format(Rst!Valor, [Ô]###,##0.00[Ô])
End If
Rst.MoveNext
Loop
End If

tinha um exit sub ali no meioo tenta agora
MOREIRA 13/04/2012 16:58:47
#399828
continua nao pegando alguns vencimentos...

e campo está normal.. tipo data..
LLAIA 13/04/2012 17:14:21
#399831
Deve resolver, altere esta linha:

 If cdate(Rst!Dt_Venct) < DtSistemas Then
RONALD.OTAVIO 14/04/2012 12:28:12
#399864
Tentou colocar a expressão Rst!Dt_Venct < Format(DtSistemas, [Ô]dd/mm/yyyy[Ô]) na cláusula where do sql?

[Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Rst!Dt_Venct < Format(DtSistemas, [Ô]dd/mm/yyyy[Ô]) and Stat_Desc =[ô]A Pagar[ô] Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]




MOREIRA 14/04/2012 17:10:39
#399877
Intrigante, mas nao fuciona nem uma das opções acima...
MARCELO.TREZE 14/04/2012 17:18:14
#399879
bom não sei qual o banco mas assim ficaria legal

o exemplo abaixo é para banco ACCESS

 Sql = [Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Stat_Desc =[ô]A Pagar[ô]  And Dt_Venct < #[Ô] & Format(DtSistemas, [Ô]mm/dd/yyyy[Ô]) & [Ô]# Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]

Rst.Open Sql, Conexao, 3

If Not Rst.EOF Then
Do While Not Rst.EOF
LblLancVncds.Caption = [Ô][Ô] & Format(Rst!Valor, [Ô]###,##0.00[Ô])
Rst.MoveNext
Loop
End If

só que veja bem exbir o valor em um label não é ideal, pois somente o ultimo resultado irá aparecer, o ideal seria exibir em um Grid ou Listbox

ex: no lugar de lblLancVncds, coloco um listbox com o nome de LstLancVnct

LstLancVnct.AddItem Rst!Vlr_Lanca & vbTab & Rst!Id_Dsp & vbTab & Rst!Dt_Venc
MOREIRA 14/04/2012 17:20:37
#399880
marcelo, estou usando o mysql. ja usei uma sql difetamente no banco, funciona da forma que quero.. já no vb, nao.. mas irei testar sua sql..
MOREIRA 14/04/2012 17:27:08
#399881
marcelo, também.. nao funcionou....

Set Rst = New ADODB.Recordset
Sql = [Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Stat_Desc =[ô]A Pagar[ô] And Dt_Venct <=[ô][Ô] & Format(DtSistemas, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]
Rst.Open Sql, Conexao, 3

If Not Rst.EOF Then
Do While Not Rst.EOF
LblLancVncds.Caption = [Ô][Ô] & Format(Rst!Valor, [Ô]###,##0.00[Ô])
Rst.MoveNext
Loop
End If
MARCELO.TREZE 14/04/2012 17:30:40
#399882
para mysql só altere o formato de data, isso se o campo Dt_venc for do tipo data/hora

veja a query

Sql = [Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Stat_Desc =[ô]A Pagar[ô]  And Dt_Venct < [ô][Ô] & Format(DtSistemas, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]


a query acima deverá funcionar com mysql leia o tópico anterior que expliquei o que deve alterar no Loop, pois veja bem um loop só é utili se a query for retornar mais de um resultado, e para exibir varios resultados deverá utilizar um listbox, ou algum grid, pois no labal, o primeiro resultado será sobreposto pelo segundo e assim por diante exibindo apenas o ultimo resultado.
FILMAN 14/04/2012 17:54:05
#399883
Bom meu amigo é o seguinte

A sua comparação entre as datas do banco com a data atual não esta certa mais para que de certo vc precisa ter a data atual
mais como assim? é o seguinte

Na declaração da variável DtSistemas você esta dizendo que a mesma é de um tipo DATE e não que ela tem a data atual!

quando você declara uma variável do tipo DATE ela te trás a PRIMEIRA DATA DO CALENDARIO DO SISTEMA que é 30/12/1899 portanto esta errado

O correto seria assim

Dim DtSistemas As Date

DtSistemas = Format(Now, [Ô]dd/MM/yyyy[Ô])

SQL = [Ô]Select Count(Id_Dsp) As Vencdas, Sum(Vlr_Lanca) As Valor, Vlr_Lanca, Dt_Venct From Tb_Despdeb Where Stat_Desc =[ô]A Pagar[ô] Group by Vlr_Lanca, Id_Dsp, Dt_Venct[Ô]
Rst.Open SQL, Conexao, 3

If Not Rst.EOF Then
Do While Not Rst.EOF
If CDate(Format(Rst!Dt_Venct, [Ô]dd/MM/yyyy[Ô])) < CDate(Format(DtSistemas, [Ô]dd/MM/yyyy[Ô])) Then
LblLancVncds.Caption = [Ô][Ô] & Format(Rst!Valor, [Ô]###,##0.00[Ô])
End If
Rst.MoveNext
Loop
End If


Verifica ai se retorna o que você esta pretendendo
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas