INICIANDO EM FLEXGRID

EDILSONLEAL 23/03/2011 19:16:25
#368944
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.
FNANDOOD 23/03/2011 19:29:04
#368946
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
MARCELO.TREZE 23/03/2011 19:29:50
#368947
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


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

GESSINGER 23/03/2011 19:55:19
#368951
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
FNANDOOD 23/03/2011 20:53:20
#368957
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.
GESSINGER 23/03/2011 22:04:26
#368966
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
Página 2 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas