INICIANDO EM FLEXGRID
caro colega o erro está na forma que voce salca a data no banco de dados, sem a devida separação de data, falta a barra de data ( / ) ou um hifen ( - ), assim o vb não consegue identificar como uma data.
troque a forma que alimenta a grid. coloque o seguinte código resolvendo o problema
.TextMatrix(.Rows - 1, 4) = mid$(rs!Data,1,2) & [Ô]/[Ô] & mid$(rs!Data,3,2) & [Ô]/[Ô] & mid$(rs!Data,5,4)
voce terá que fazer o tratamento para datas nulas no código.
espero ter ajudado um abraço.
troque a forma que alimenta a grid. coloque o seguinte código resolvendo o problema
.TextMatrix(.Rows - 1, 4) = mid$(rs!Data,1,2) & [Ô]/[Ô] & mid$(rs!Data,3,2) & [Ô]/[Ô] & mid$(rs!Data,5,4)
voce terá que fazer o tratamento para datas nulas no código.
espero ter ajudado um abraço.
Você deve atentar a formatação da data pois o datediff não calcula se o campo estiver em branco
tenta assim que funciona:
Private Sub VerificaStatus()
Dim DIAS As Long
Dim I As Integer
For I = 1 To GridDados.Rows - 1
dia1 = Format(GridDados.TextMatrix(I, 4), [Ô]00/00/0000[Ô])
dia2 = Date
If IsDate(dia1) And IsDate(dia2) Then
MsgBox DateDiff([Ô]d[Ô], dia1, dia2)
DIAS = DateDiff([Ô]d[Ô], Format(GridDados.TextMatrix(I, 4), [Ô]00/00/0000[Ô]), Date)
If DIAS >= 30 Then
GridDados.TextMatrix(I, 5) = [Ô]Parcela vencida![Ô]
End If
End If
Next I
End Sub
tenta assim que funciona:
Private Sub VerificaStatus()
Dim DIAS As Long
Dim I As Integer
For I = 1 To GridDados.Rows - 1
dia1 = Format(GridDados.TextMatrix(I, 4), [Ô]00/00/0000[Ô])
dia2 = Date
If IsDate(dia1) And IsDate(dia2) Then
MsgBox DateDiff([Ô]d[Ô], dia1, dia2)
DIAS = DateDiff([Ô]d[Ô], Format(GridDados.TextMatrix(I, 4), [Ô]00/00/0000[Ô]), Date)
If DIAS >= 30 Then
GridDados.TextMatrix(I, 5) = [Ô]Parcela vencida![Ô]
End If
End If
Next I
End Sub
O problema estva nos campos data dentro do grid tive de formatar inserindo as barras.
depois tive de criar um if para ignorar os campos datas em branco
veja como ficou
depois tive de criar um if para ignorar os campos datas em branco
veja como ficou
Dim conex As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub Form_Load()
With GridDados
.Rows = 1
.Cols = 6
.FormatString = [Ô]ID|NOME|PRODUTO|PRECO R$|DATA|Status[Ô]
.ColWidth(0) = 500
.ColWidth(1) = 1200
.ColWidth(2) = 1500
.ColWidth(3) = 1500
.ColWidth(4) = 1500
.ColWidth(5) = 3000
[ô]Conexão
sConnString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Banco.mdb;Persist Security Info=False[Ô]
conex.Open sConnString
rs.Open [Ô]Select * from Fiados order by Nome[Ô], conex, adOpenKeyset, adLockOptimistic
Do While Not rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = rs!id & [Ô][Ô]
.TextMatrix(.Rows - 1, 1) = rs!nome & [Ô][Ô]
.TextMatrix(.Rows - 1, 2) = rs!produto & [Ô][Ô]
.TextMatrix(.Rows - 1, 3) = rs!preco & [Ô][Ô]
.TextMatrix(.Rows - 1, 4) = Format(rs!Data & [Ô][Ô], [Ô]##/##/####[Ô])
.TextMatrix(.Rows - 1, 5) = rs!Status & [Ô][Ô]
rs.MoveNext
Loop
End With
VerificaStatus
End Sub
Private Sub VerificaStatus()
Dim Dias As Long
Dim I As Integer
With GridDados
For I = 1 To .Rows - 1
If .TextMatrix(I, 4) <> [Ô][Ô] Then
Dias = DateDiff([Ô]d[Ô], CDate(.TextMatrix(I, 4)), Date)
If Dias >= 30 Then
.TextMatrix(I, 5) = [Ô]Parcela vencida![Ô]
End If
End If
Next I
End With
End Sub
tem como usar esse rotina alterando algumas coisas, num DataGrid ao invez de Flex ?
e o resultado ser o memso ? pois com Flex deu certo , porem eu trabalho mais com Datagrid...se tiver como , Peço a ajudad de todos
[ô]--------------------------------------------------------
Private Sub VerificaStatus()
Dim Dias As Long
Dim I As Integer
For I = 1 To GridDados.Rows - 1
Dias = DateDiff([Ô]d[Ô], GridDados.TextMatrix(I, 4), Date)
If Dias >= 30 Then
GridDados.TextMatrix(I, 5) = [Ô]Parcela vencida![Ô]
End If
Next I
End Sub
e o resultado ser o memso ? pois com Flex deu certo , porem eu trabalho mais com Datagrid...se tiver como , Peço a ajudad de todos
[ô]--------------------------------------------------------
Private Sub VerificaStatus()
Dim Dias As Long
Dim I As Integer
For I = 1 To GridDados.Rows - 1
Dias = DateDiff([Ô]d[Ô], GridDados.TextMatrix(I, 4), Date)
If Dias >= 30 Then
GridDados.TextMatrix(I, 5) = [Ô]Parcela vencida![Ô]
End If
Next I
End Sub
Não dá pois o datagrid conecta com o Banco de Dados,
o que dá pra fazer é gerar um Banco de dados temporário com essas informações e ai carregar no datagrid.
o que dá pra fazer é gerar um Banco de dados temporário com essas informações e ai carregar no datagrid.
Assim como o Flexgrid o datagrid conecta ao banco não ?
tem como vc me mostrar como faz isso ? pois eu sempre usei o datagrid e não flex
preciso q seja no datagrid, mesmo q tenha q gerar um Banco de dados temporário
tem como vc me mostrar como faz isso ? pois eu sempre usei o datagrid e não flex
preciso q seja no datagrid, mesmo q tenha q gerar um Banco de dados temporário
Tópico encerrado , respostas não são mais permitidas