CONTAS A RECEBER

EVANDRO734 31/01/2016 00:59:59
#456760
Olá, estou com um simples probleminha que está me dando dor de cabeça, já tentei de várias maneiras mais nenhuma com exito...então...eu estou tentando fazer com que a data de Vencimento fique por exemplo:1 parcela = 31/2/2016 , 2 parcela = 31/3/2016 e assim por diante...segue o código abaixo...

 Private Sub PGravaDados()
Dim Valor As Decimal = (txtparcelas.Text)

Dim Dia As Integer = Today.Day
Dim Mes As Integer = Today.Month
Dim Ano As Integer = Today.Year

Using con As OleDbConnection = GetConnectionContasReceber()
Try
con.Open()
Dim sql As String = [Ô]INSERT INTO ContasReceber(CLIENTE,EMISSAO,VENCIMENTO,PARCELAS,DESCRICAO,VALOR,SITUACAO,CPF,RG,ENDERECO,NUMERO,BAIRRO,CIDADE) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

For a = 1 To Val(txtparcelas.Text)
For i = 1 To Val(txtparcelas.Text)
Mes = Mes + 1
If Mes > 12 Then
Mes = 1
Ano = Ano + 1
End If
Next

cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]CLIENTE[Ô], txtcliente.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]EMISSAO[Ô], txtdataCadastro.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]VENCIMENTO[Ô], (Dia) & ([Ô]/[Ô]) & (Mes) & ([Ô]/[Ô]) & (Ano))) [ô]txtdataVencimento.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]PARCELAS[Ô], txtparcelas.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]DESCRICAO[Ô], txtdescricao.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]VALOR[Ô], FormatCurrency(txtvalor.Text / (Valor))))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]SITUACAO[Ô], cbsituacao.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]CPF[Ô], txtcpf.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]RG[Ô], txtrg.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]ENDERECO[Ô], txtendereco.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]NUMERO[Ô], txtnum.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]BAIRRO[Ô], txtbairro.Text))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]CIDADE[Ô], txtcidade.Text))
cmd.ExecuteNonQuery()

Next

MessageBox.Show([Ô]Lançamento efetuado com Sucesso ![Ô], [Ô]SALVO[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Using
End Sub
KERPLUNK 31/01/2016 01:29:07
#456761
Esse é um dos erros mais comuns entre iniciantes: Formatos de dados, principalmente datas.
Ao invés de usar inteiros para dia, mês e ano, use uma variável do tipo DateTime e adicione meses, dias, anos, minutos, segundos ou o que quiser, assim:

Dim data As DateTime
Data = Today

[ô]quando for fazer calculos:
data = data.AddMonth(1)

[ô]Na gravação
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]VENCIMENTO[Ô], data))

KURTGU 31/01/2016 02:06:19
#456763
E o que alguns amigos aqui do forum vem dizendo os progamadores control c e control v, voce fez outra pergunta, se tivesse ao menos perdido o seu tempo lendo...no topico abaixo iria ver que o codigo que postei ja esta fazendo isso...Preguica de ler...

http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=456666&pagina=1
NICKOSOFT 31/01/2016 10:16:27
#456765
a coisa é tao boa criando data q vc vai conseguir criar 31/02 tmb......como já foi dito tem formas reais de trabalhar c data pra não criar datas absurdas igual já tem na tela 31/04. pelo menos trabalhando com datas mesmo, so serão aceitas datas validas.....
e tem mais, se vc usa esse insert ai vai inserir um numero fixo de prestação em todas, até ai ainda tem como contornar na hora da exibição em tela.....depende de onde quer mudar.....
Faça seu login para responder