tenho um metodo que cria as datas de paamento e salva as mesmas no banco junto com o valor e o numero de cada parcela até ai tudo bem ,meu problema esta no bloco do if e else é que a 1 parcela sempre devera ser paga no dia d hj por exemplo dai as outras d 30 em 30 dias dai se é feita o calculo em uma vez,se o num é igual a um no cod da certo mas se eu faço em mais vezes ele calcula 30 dias para 1 pgto =[
o q estou fazndo errado?
[code]try{
resultado = comando.executeQuery(“select valor_entrada,valor_total,parcelas,observacao,valor_parcela,data_pgto from financeiro where rc_aluno=’”+ t2.getText() +"’");
if(resultado.next())
{
JOptionPane.showMessageDialog(null, “Os dados financeiros referentes a este aluno\nja foram cadastrados!”);
}
else{
int num=0;
if(t7.getText()!=null)
num=Integer.parseInt(t7.getText());
String ve[]=new String[num];
int q=0;
Object key[]=new Object[ve.length];
resultado = comando.executeQuery("select numero_parcela from parcelas where qntde_parcelas='"+ t7.getText() +"'");
while(resultado.next())
{
ve[q]=resultado.getString(1);
q++;
}
for(int i=0;i<key.length;i++)
{
System.out.println(ve[i]+" pos "+i);
if(num==1)
{//a 1 parcela é sempre paga no dia da matricula!!!
Date data = dataAtual.getTime();
DateFormat formata = DateFormat.getDateInstance();
resultado1 = formata.format(data);
key[i]=resultado1;
System.out.println(key[i]);
}
else if(num<=2)
{
dataAtual.add(GregorianCalendar.DATE, 30);
Date data2 = dataAtual.getTime();
DateFormat formata2 = DateFormat.getDateInstance();
resultado2 = formata2.format(data2);
key[i]=resultado2;
}
...
for(int i=0;i<ve.length;i++)
comando.executeUpdate("insert into financeiro (rc_aluno,valor_entrada,valor_total,parcelas,observacao,valor_parcela,data_pgto) values ('" + t2.getText() + "','" + t6.getText() + "','"+t5.getText()+ "','"+ve[i] +"','"+ txt.getText() +"','"+ t8.getText() + "','"+ key[i] + "')" );
JOptionPane.showMessageDialog(null, "Dados financeiros incluidos com sucesso!! ");
}
} catch( SQLException e1){ //trata os erros SQL
e1.printStackTrace();
JOptionPane.showMessageDialog(null, this, "Erro Cmdo SQL " + e1.getMessage(), 0 );
}[/code]
hmm
mas tipo se eu fizer do jeito que tu estas me explicando não terei problema ao salvar isso tipo se eu fizer em 2 vezes vai ser salvo a data da parcela 1 e da 2 ou só da 2?
bah obrigada pela ajuda drsmachado!!
=]
Então, também é possível separar a parte do primeiro pagamento, mantendo-a fixa para a data atual e, se houver mais parcelas, seguir com tua lógica.
Acho que ficaria mais simples, não?
Assim, não sei se estou sendo claro, tira o if(num == 1) e coloca ele fora (afinal, se for em 1 vez, não altera em nada e se não for, a primeira parcela será paga na data atual, certo?)
if(num == 1){
//logica para 1 parcela
}else{
for//segue o codigo
if(num == 2)
}
drsmachado
tentei dakele jeito mas continua calculando 30 dias para o primeiro pgto
=[
e tipo se eu modifico os if’s gera as datas de 90 em 90 dd
=[
e agora?
creio que num= (numero de parcelas) certo?
se for o seu problema pode estar na logica ou seja:
se o num(numero de parcelas for > 1 ele nao executa o primeiro if.
se for esse o problema vc pode usar:
if (>=1)
eu li o seu codigo sou novo em java mas trabalho com PLC de maquinas e conheco um pouco de logica.
Z3U5
pior que desta maneira que tu disseste ele executa o primeiro if mas o problema é que ele so executa ele!
tipo cmo posso fazer pra executar ele e os demais if’s?
obg
o cod tinha fikdo
[code]if(num>=1)
{//a 1 parcela é sempre paga no dia da matricula!!!
Como ele terá de executar a tarefa, ao menos uma vez e, esta vez, deve ser registrada a data atual…
O num equivale ao número de parcelas, portanto, ele já está definido quando você entra no for, correto? Creio que o ideal é colocar os outros ifs dentro do primeiro:
if(num > 0){
Date data = dataAtual.getTime();
DateFormat formata = DateFormat.getDateInstance();
resultado1 = formata.format(data);
key[i]=resultado1;
System.out.println(key[i]);
if(num <= 2){
dataAtual.add(GregorianCalendar.DATE, 30);
Date data2 = dataAtual.getTime();
DateFormat formata2 = DateFormat.getDateInstance();
resultado2 = formata2.format(data2);
key[i]=resultado2;
}else if (num <= 3){
...
Assim, ele sempre irá considerar que existe 1 parcela (data atual) e, havendo mais de uma, ele passa para o restante dos ifs, sempre verificando se o número de parcelas.
drsmachado
bah aconteceu um problema
tipo agora eu consigo pegar a data atual para primeira parcela,mas todas as outras ficam com a mesma data da primeira=[
fiz algo errado no cod?
[/code]
Tenta assim tirei else mudei o primeiro if if(num>=1) e if(num==2)
para 2 parcelas se for em mais parcelas if(num>=2)…if(num>=3) etc.
desculpa ai drsmachado ter invadido.