PARACELA ERRO COM O SEGUNDO MES DO ANO

FABRICIOWEB 30/04/2015 07:10:26
#446240
Galera estou gerando as parcelas mas quando o ano muda a data de feverreiro fica como 1930
estou gerando dessa forma



FUNÇÃO PARCELA

Dim mes As Integer
Dim ano As Integer
Dim data As String
Dim COTA As Integer
Dim parc As Integer
COTA = 0
mes = Format(Now, [Ô]mm[Ô])
ano = Format(Now, [Ô]yy[Ô])
parc = Val(txtnumeroparcelas.Text)
For i = 1 To Val(txtnumeroparcelas.Text)
COTA = COTA + 1
mes = mes + 1
If mes > 12 Then
mes = 1
ano = ano + 1
End If
dia1 = Format(Text35.Text, [Ô]dd[Ô])
dia = Verifica_dia(dia1, mes)
data = dia & [Ô]/[Ô] & Format(mes, [Ô]00[Ô]) & [Ô]/[Ô] & Format(ano, [Ô]00[Ô])
parcela = CCur(txtvalor.Text) / txtnumeroparcelas.Text
Connect

rs.Open [Ô]SELECT * FROM CAIXA[Ô], CON, adOpenStatic, adLockOptimistic
rs.AddNew
rs.Fields(1) = Text10.Text
rs.Fields(2) = Format(txtcodigo, [Ô]0000000000000[Ô]) [ô] CLng(txtcodigo.Text)
rs.Fields(5) = Format(CDate(data), [Ô]dd/mm/yy[Ô])
rs.Fields(3) = CCur(parcela)
rs.Fields(6) = [Ô]ABERTA[Ô]
rs.Fields(8) = [Ô]Prestação de serviço[Ô]
rs.Fields([Ô]MODOPAGAMENTO[Ô]) = MDCO1.Text
rs.Fields(7) = Date
rs.Fields(4) = COTA & [Ô] / [Ô] & Val(txtnumeroparcelas.Text)
rs.Update
Disconnect
[ô]MsgBox Format(CDate(Data), [Ô]dd/mm/yy[Ô])
Next

FUNÇÃO VERIFICA DIA

Public Function Verifica_dia(dia, mes)
Dim diasDoMes As Variant

dia = Val(dia)

diasDoMes = Array(31, 28, 30, 30, 31, 30, 31, 30, 30, 31, 30, 31)

If dia = 31 Then
Verifica_dia = diasDoMes(mes - 1)
Else
Verifica_dia = dia
End If

End Function
OMAR2011 30/04/2015 09:35:35
#446245
Dim mes As Integer
Dim ano As Integer
Dim data As String
Dim COTA As Integer
Dim parc As Integer
COTA = 0
mes = Format(Now, [Ô]mm[Ô])
ano = Format(Now, [Ô]yy[Ô])
parc = Val(txtnumeroparcelas.Text)
For i = 1 To Val(txtnumeroparcelas.Text)
COTA = COTA + 1
mes = mes + 1
If mes > 12 Then
mes = 1
ano = ano + 1
End If
dia1 = Format(Text35.Text, [Ô]dd[Ô])
dia = Verifica_dia(dia1, mes)
data = dia & [Ô]/[Ô] & Format(mes, [Ô]00[Ô]) & [Ô]/[Ô] & Format(ano, [Ô]00[Ô])
parcela = CCur(txtvalor.Text) / txtnumeroparcelas.Text
Connect

rs.Open [Ô]SELECT * FROM CAIXA[Ô], CON, adOpenStatic, adLockOptimistic
rs.AddNew
rs.Fields(1) = Text10.Text
rs.Fields(2) = Format(txtcodigo, [Ô]0000000000000[Ô]) [ô] CLng(txtcodigo.Text)
rs.Fields(5) = Format(CDate(data), [Ô]dd/mm/yy[Ô])
rs.Fields(3) = CCur(parcela)
rs.Fields(6) = [Ô]ABERTA[Ô]
rs.Fields(8) = [Ô]Prestação de serviço[Ô]
rs.Fields([Ô]MODOPAGAMENTO[Ô]) = MDCO1.Text
[txt-color=#e80000][ô]rs.Fields(7) = Date[/txt-color] Mude isto para data = dia & [Ô]/[Ô] & Format(mes, [Ô]00[Ô]) & [Ô]/[Ô] & Format(ano, [Ô]00[Ô])
rs.Fields(7) =Data
rs.Fields(4) = COTA & [Ô] / [Ô] & Val(txtnumeroparcelas.Text)
rs.Update
Disconnect
[ô]MsgBox Format(CDate(Data), [Ô]dd/mm/yy[Ô])
Next
FABRICIOWEB 30/04/2015 09:46:30
#446246
Esse campo esta correto so a data atual de lançamento

esse esta errado e onde formam as parcelas
[txt-color=#e80000]rs.Fields(5) = Format(CDate(data), [Ô]dd/mm/yy[Ô])[/txt-color]


esse erro so acontece se o dia do vencimento for dia 30 ou dia 31 e so acontece no fevereiro
FABRICIOWEB 30/04/2015 16:00:56
#446258
eNTAO A SOLUÇÃO ESTA DENTRO DESTA FUNÇÃO MAS COMO RESOLVER


Dim diasDoMes As Variant

dia = Val(dia)

diasDoMes = Array(31, 28, 30, 30, 31, 30, 31, 30, 30, 31, 30, 31)

If dia = 31 Then
Verifica_dia = diasDoMes(mes - 1)
Else
Verifica_dia = dia
End If
F001E 30/04/2015 18:16:55
#446264
Resposta escolhida
veja se isso te ajuda....
FFCOUTO 30/04/2015 21:57:59
#446267
Porque não usa a função DATEADD?
Se a forma de parcelamento é mensal, ou seja, o vencimento é sempre no mesmo dia, basta usar:

For i = 1 To nroParcelas
dataParcela = DATEADD([Ô]m[Ô], i, dataVenda)
Next


Se a forma de parcelamento é a cada 30 dias, use:

For i = 1 To nroParcelas
dataParcela = DATEADD([Ô]d[Ô], (i *30), dataVenda)
Next


Qualquer dúvida poste.
FABRICIOWEB 30/04/2015 22:36:56
#446268
Funfo bacana F001E vlwww
Tópico encerrado , respostas não são mais permitidas