DATEADD - PARCELAS
Olá pessoal, boa tarde. essa rotina estou gerando parcelas... até aÃ.. Blz..
Exemplo...: Preciso informar um intervalo a partir da primeiro
numero de parcela = 2
Informar o intervalo 10 dias a partir
1ª - vencimento. 17-11-2014
2ª - vencimento 27-11-2014
3ª etc...
Private Sub chameleonButton3_Click()
On Error Resume Next
Dim IntContador As Integer
Dim IntNumeroParcelas As Integer
Dim VarDataVencimento As String
Dim ValDataVencimento As String
Dim MeuValorPrincipal As Double
Dim intervalo As Integer
intervalo = 10
IntNumeroParcelas = txtfechavenda_quant_parcelas.text
ValDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
VarDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
MeuValorPrincipal = lblvalor_venda_orcto.Caption
MeuValorPrincipal = CDbl(MeuValorPrincipal) / Val(IntNumeroParcelas)
Call abrir_conexao_base_dados
For IntContador = 1 To IntNumeroParcelas
VarDataVencimento = DateAdd([Ô]m[Ô], IntContador - 1, ValDataVencimento)
Set rst = New ADODB.Recordset
sql = [Ô]Insert Into tb_titulos_receber (titulo_valor_receber, titulo_data_vencto)[Ô]
sql = sql & [Ô]values([Ô]
sql = sql & [Ô][ô][Ô] & Replace(CDbl(MeuValorPrincipal), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Format(VarDataVencimento, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô])[Ô]
Conexao.Execute sql
Next IntContador
End Sub
Boa tarde, se entendi direito.. ficaria assim..
VarDataVencimento - Guarda a primeira data de vencimento? Se sim, é só adicionar depois da inclusão no banco a nova data de vencimento.. no caso
Abraços
VarDataVencimento - Guarda a primeira data de vencimento? Se sim, é só adicionar depois da inclusão no banco a nova data de vencimento.. no caso
VarDataVencimento = cDate(VarDataVencimento) + intervalo
On Error Resume Next
Dim IntContador As Integer
Dim IntNumeroParcelas As Integer
Dim VarDataVencimento As String
Dim ValDataVencimento As String
Dim MeuValorPrincipal As Double
Dim intervalo As Integer
intervalo = 10
IntNumeroParcelas = txtfechavenda_quant_parcelas.text
ValDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
VarDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
MeuValorPrincipal = lblvalor_venda_orcto.Caption
MeuValorPrincipal = CDbl(MeuValorPrincipal) / Val(IntNumeroParcelas)
Call abrir_conexao_base_dados
For IntContador = 1 To IntNumeroParcelas
Set rst = New ADODB.Recordset
sql = [Ô]Insert Into tb_titulos_receber (titulo_valor_receber, titulo_data_vencto)[Ô]
sql = sql & [Ô]values([Ô]
sql = sql & [Ô][ô][Ô] & Replace(CDbl(MeuValorPrincipal), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Format(VarDataVencimento, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô])[Ô]
Conexao.Execute sql
VarDataVencimento = cDate(VarDataVencimento) + intervalo
Next IntContador
End Sub
Abraços
Prezado,
O intervalo, no exemplo, é 10 dias. Logo o intervalo da primeira parcela é 10 dias (1 * 10). O da segunda parcela será 20 dias (2 * 10). O da terceira parcela será 30 dias (3 * 10). O amigo Leando Ferreira chegou perto, acredito, mas falou multiplicar o intervalo pelo número da parcela.
Seu código ficaria como abaixo (só depende do BD, no postgres funcionou bem). Coloquei em negrito e itálico a mudança que fiz.
O intervalo, no exemplo, é 10 dias. Logo o intervalo da primeira parcela é 10 dias (1 * 10). O da segunda parcela será 20 dias (2 * 10). O da terceira parcela será 30 dias (3 * 10). O amigo Leando Ferreira chegou perto, acredito, mas falou multiplicar o intervalo pelo número da parcela.
Seu código ficaria como abaixo (só depende do BD, no postgres funcionou bem). Coloquei em negrito e itálico a mudança que fiz.
Private Sub chameleonButton3_Click()
On Error Resume Next
Dim IntContador As Integer
Dim IntNumeroParcelas As Integer
Dim VarDataVencimento As String
Dim ValDataVencimento As String
Dim MeuValorPrincipal As Double
Dim intervalo As Integer
intervalo = 10
IntNumeroParcelas = txtfechavenda_quant_parcelas.text
ValDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
VarDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
MeuValorPrincipal = lblvalor_venda_orcto.Caption
MeuValorPrincipal = CDbl(MeuValorPrincipal) / Val(IntNumeroParcelas)
Call abrir_conexao_base_dados
For IntContador = 1 To IntNumeroParcelas
VarDataVencimento = DateAdd([Ô]m[Ô], IntContador - 1, ValDataVencimento)
Set rst = New ADODB.Recordset
sql = [Ô]Insert Into tb_titulos_receber (titulo_valor_receber, titulo_data_vencto)[Ô]
sql = sql & [Ô]values([Ô]
sql = sql & [Ô][ô][Ô] & Replace(CDbl(MeuValorPrincipal), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Format(VarDataVencimento + (IntContador * IntNumeroParcelas), [Ô]yyyy/mm/dd[Ô]) & [Ô][ô])[Ô]
Conexao.Execute sql
Next IntContador
End Sub
bom vamos lá, primeiro a simplicidade é o caminho mais curto e correto
então a estrutura básica é:
baseado no código acima bastaria adaptar para o seguinte
repare que alterei duble para currency e CDbl para CCur, desta forma você terá maiorprecisão no valor das parcelas.
bom teste ai
então a estrutura básica é:
Dim Parcelas As Integer
Dim Intervalo As Integer
Dim datas As String
Parcelas = 2
Intervalo = 10
For i = 0 To Parcelas - 1
datas = datas & DateAdd([Ô]d[Ô], i * Intervalo, Date) & vbCrLf
Next i
MsgBox datas
baseado no código acima bastaria adaptar para o seguinte
Private Sub chameleonButton3_Click()
[ô] On Error Resume Next <-- tome cuidado com esta linha ela pode camuflar algum erro do código
Dim IntContador As Integer
Dim IntNumeroParcelas As Integer
Dim VarDataVencimento As Date
Dim MeuValorPrincipal As Currency
Dim intervalo As Integer
intervalo = 10
IntNumeroParcelas = txtfechavenda_quant_parcelas.text
ValDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
VarDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
MeuValorPrincipal = CCur(lblvalor_venda_orcto.Caption) / IntNumeroParcelas
Call abrir_conexao_base_dados
For IntContador = 0 To IntNumeroParcelas -1
VarDataVencimento = DateAdd([Ô]d[Ô], IntContador * Intervalo, ValDataVencimento)
Set rst = New ADODB.Recordset
sql = [Ô]Insert Into tb_titulos_receber (titulo_valor_receber, titulo_data_vencto)[Ô]
sql = sql & [Ô]values([Ô]
sql = sql & [Ô][ô][Ô] & CCur(Replace(MeuValorPrincipal, [Ô],[Ô], [Ô].[Ô])) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Format(VarDataVencimento, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô])[Ô]
Conexao.Execute sql
Next IntContador
End Sub
repare que alterei duble para currency e CDbl para CCur, desta forma você terá maiorprecisão no valor das parcelas.
bom teste ai
bom. pessoal é o seguinte...
conforme o código abaixo...
funcionando
porem, preciso que fique assim
hoje: 1ª parcela --> 17-11-2014
--> 2ª 27-11-2014, parcelas 10 dias contando a partir da primeira
3ª etc....
da forma que está, ele já conta logo a primeira parcelas, 10 dias, preciso que fica a segunda, terceira etc......
conforme o código abaixo...
funcionando
[ô]On Error Resume Next
Dim IntContador As Integer
Dim IntNumeroParcelas As Integer
Dim VarDataVencimento As Date
Dim ValDataVencimento As Date
Dim MeuValorPrincipal As Double
Dim intervalo As Integer
IntNumeroParcelas = txtfechavenda_quant_parcelas.text
ValDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
VarDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
MeuValorPrincipal = lblvalor_venda_orcto.Caption
MeuValorPrincipal = CDbl(MeuValorPrincipal) / Val(IntNumeroParcelas)
intervalo = 10
Call abrir_conexao_base_dados
For IntContador = 1 To IntNumeroParcelas
VarDataVencimento = DateAdd([Ô]m[Ô], IntContador - 1, ValDataVencimento)
Set rst = New ADODB.Recordset
sql = [Ô]Insert Into tb_titulos_receber (titulo_valor_receber, titulo_data_vencto)[Ô]
sql = sql & [Ô]values([Ô]
sql = sql & [Ô][ô][Ô] & Replace(CDbl(MeuValorPrincipal), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Format(VarDataVencimento + (IntContador * intervalo), [Ô]yyyy/mm/dd[Ô]) & [Ô][ô])[Ô]
Conexao.Execute sql
Next IntContador
porem, preciso que fique assim
hoje: 1ª parcela --> 17-11-2014
--> 2ª 27-11-2014, parcelas 10 dias contando a partir da primeira
3ª etc....
da forma que está, ele já conta logo a primeira parcelas, 10 dias, preciso que fica a segunda, terceira etc......
testou meu código acima
testar agora
Boa noite colega,
Vi que o código que lhe passei quase chegou no que você precisava, porém começou já colocando 10 dias na primeira parcela e a primeira parcela não pode já sair adicionada de 10 dias. Neste caso, bastará uma troca no seu código, no For, que deixo em negrito e itálico.
Tudo de bom.
Vi que o código que lhe passei quase chegou no que você precisava, porém começou já colocando 10 dias na primeira parcela e a primeira parcela não pode já sair adicionada de 10 dias. Neste caso, bastará uma troca no seu código, no For, que deixo em negrito e itálico.
[ô]On Error Resume Next
Dim IntContador As Integer
Dim IntNumeroParcelas As Integer
Dim VarDataVencimento As Date
Dim ValDataVencimento As Date
Dim MeuValorPrincipal As Double
Dim intervalo As Integer
IntNumeroParcelas = txtfechavenda_quant_parcelas.text
ValDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
VarDataVencimento = txtfechavenda_data_vencto.text [ô]Variável
MeuValorPrincipal = lblvalor_venda_orcto.Caption
MeuValorPrincipal = CDbl(MeuValorPrincipal) / Val(IntNumeroParcelas)
intervalo = 10
Call abrir_conexao_base_dados
[i]For IntContador = 0 To (IntNumeroParcelas - 1)[/i]
VarDataVencimento = DateAdd([Ô]m[Ô], IntContador - 1, ValDataVencimento)
Set rst = New ADODB.Recordset
sql = [Ô]Insert Into tb_titulos_receber (titulo_valor_receber, titulo_data_vencto)[Ô]
sql = sql & [Ô]values([Ô]
sql = sql & [Ô][ô][Ô] & Replace(CDbl(MeuValorPrincipal), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Format(VarDataVencimento + (IntContador * intervalo), [Ô]yyyy/mm/dd[Ô]) & [Ô][ô])[Ô]
Conexao.Execute sql
Next IntContador
Tudo de bom.
Tópico encerrado , respostas não são mais permitidas