CONTAS A RECEBER
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
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:
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))
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
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=456666&pagina=1
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.....
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