VALOR RETORNANDO COMO NEGATIVO

MOREIRA 17/03/2010 15:53:54
#337195
Estou Usando uma Query para contar dias em atraso, sendo q após um dia de vencimento o resultado fica negativo.. Vejam como esta imagem

já tentei usar (CDBL, CCUR... ETC....
--
Public Sub BuscaParc()
Dim DiasAtraso As Integer
Set Rst = New ADODB.Recordset
Sql = [Ô]Select Id, DtVencto, VlrParc, PrazoPgto, DateDiff(Now(), DtVencto) As DiasAtraso From Tbl_Receber Where IdCli = [ô][Ô] & TxtId.Text & [Ô][ô]And Status =[ô]Em Aberto[ô] Order By DtVencto Asc[Ô]
Rst.Open Sql, Conexao, 3
If Not Rst.EOF Then
With G
.Rows = 1
.Cols = 6
.ColWidth(0) = 0
.ColWidth(1) = 1555
.ColWidth(2) = 1555
.ColWidth(3) = 1111
.ColWidth(4) = 1111
.ColWidth(5) = 1555

[ô]Cabecalho do Grid
.TextMatrix(0, 0) = [Ô]Id[Ô]
.TextMatrix(0, 1) = [Ô]Dt. Vencto[Ô]
.TextMatrix(0, 2) = [Ô]Vlr. Parc R$[Ô]
.TextMatrix(0, 3) = [Ô]Parc.[Ô]
.TextMatrix(0, 4) = [Ô]Dias Atraso[Ô] <------------
.TextMatrix(0, 5) = [Ô]Vlr. a Pagar R$[Ô] <---------
End With

I = 1
Do While Not Rst.EOF
With G
.Rows = I + 1
.TextMatrix(I, 0) = [Ô][Ô] & Rst!Id
.TextMatrix(I, 1) = [Ô][Ô] & Format(Rst!DtVencto, [Ô]dd/mm/yyyy[Ô])
.TextMatrix(I, 2) = [Ô][Ô] & Format(Rst!VlrParc, [Ô]###,##0.00[Ô])
.TextMatrix(I, 3) = [Ô][Ô] & Rst!PrazoPgto <--------
.TextMatrix(I, 4) = [Ô][Ô] & Rst!DiasAtraso <------

xValor = CDbl(Format(Rst!VlrParc, [Ô]###,##0.00[Ô])) [ô]Valor
xDias = CDbl(Rst!DiasAtraso) [ô]Dias
xJuros = CDbl([Ô]0,08[Ô]) [ô]Formula do Calculo:=> 8/100 = 0,08

[ô]For xCont = 1 To xDias
xTemp = (xValor * xJuros)
xValor = (xTemp * xDias) + xValor
[ô]Next xCont
.TextMatrix(I, 5) = Format(xValor, [Ô]###,##0.00[Ô])

End With
I = I + 1
Rst.MoveNext
xValor = 0 [ô]Limpando a varíavel
xDias = 0 [ô]Limpando a varíavel
xJuros = 0 [ô]Limpando a varíavel
Loop


Else
MsgBox ([Ô]Não há RegistroS[Ô]), vbCritical, [Ô]ATENÇÃO[Ô]


End If
Rst.Close
Set Rst = Nothing
End Sub
--


LLAIA 17/03/2010 16:08:14
#337198
tirei isso do help do access:



Citação:



Sintaxe
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

Se date1 se referir a um ponto no tempo posterior a date2, a função DifData retornará um número negativo.



então experimente inverter os parâmetros de entrada em DateDiff

DateDiff([ô]d[ô], DtVencto, Now())

MOREIRA 17/03/2010 17:09:38
#337218
não deu certo, erro---> O driver OBDBC nao oferece suporte para propriedades Solicidatas

O db usado é MYSQL
RODRIGOMARCHESE 17/03/2010 17:13:35
#337219
Resposta escolhida
Converta para valor absoluto: ABS
LLAIA 17/03/2010 17:16:10
#337220
Citação:

:
não deu certo, erro---> O driver OBDBC nao oferece suporte para propriedades Solicidatas

O db usado é MYSQL




DateDiff tem no MYSQL ? Eu não sei.

Eu me guiei pelo que vc postou. Se tem, então tire o parâmetro [ô]d[ô] da função pra ver
MOREIRA 17/03/2010 17:26:56
#337226
Ola, RODRIGOMARCHESE, funcionou. blz.. com ABS

Por Favor, tem um outro probleminha.. As Datas a Serem Vencidas não Deveriam Contar Dias de Atrasos. o deve esta errado ak
Sql = [Ô]Select Id, DtVencto, VlrParc, PrazoPgto, DateDiff(Now(), DtVencto) As DiasAtraso From Tbl_Receber Where IdCli = [ô][Ô] & TxtId.Text & [Ô][ô]And Status =[ô]Em Aberto[ô] Order By DtVencto Asc[Ô]

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