Incrementar data ao inserir

9 respostas
jaissonduarte

e ai pessoal estou querendo fazer um sistema de vendas que quando
o vendedor for fazer uma venda que pegue a data atual e as parcelas
e insere no banco a data atual e incremente as as parcelas
acho que deu para entender
segue um trecho de código que achei aqui para incrementar mas como por ele para adicionar no banco de dados

public static void main(String[] args) {
        GregorianCalendar gc = new GregorianCalendar();
        int numPar = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de parcelas"));
        Date diaAtual = new Date();
        for (int e = 0; e < numPar; e++) {
            gc.setTime(diaAtual);
            gc.roll(GregorianCalendar.MONTH, e);
            DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            Date d = gc.getTime();
            if (d.equals(diaAtual)) {
                System.out.print("Entrada ");
            } else {
                System.out.print("Parcela " + e + ": ");
            }
            System.out.println(df.format(d));
        }
    }

9 Respostas

mauricioadl

se entendi bem vc quer algo assim:

GregorianCalendar gc = new GregorianCalendar(); System.out.println(gc.getTime()); int parcelas = 5; for (int i = 0; i &lt; parcelas; i++) { gc.set(GregorianCalendar.DAY_OF_MONTH, gc.get(GregorianCalendar.DAY_OF_MONTH) + 30); System.out.println(gc.getTime()); }

jaissonduarte

Isso ai mas como fazer ele inserir no banco de dados
tipo assim tenho esse metódo para inserir no banco agora como inserir as datas incrementando

public boolean inserir(Gastos objeto) {
        objeto.setCodigo(obtemproximocodigo());
        String sql = "INSERT INTO gastos (descricao, data, valor, ie_fazenda, cod_tipo_gastos, animal, parcelas, data_primeiro_vencimento, codigo) VALUES (?,?,?,?,?,?,?,?,?)";
        try {
            PreparedStatement ps = Conexao.getConexao().prepareStatement(sql);
            ps.setString(1, objeto.getDescricao());
            ps.setDate(2, ConverteData.formataData(objeto.getData()));
            ps.setDouble(3, objeto.getValor());
            ps.setLong(4, objeto.getFazenda().getIe());
            ps.setInt(5, objeto.getTipo_gastos().getCodigo());

            if (objeto.getAnimal() == null) {
                ps.setNull(6, Types.INTEGER);
            } else {
                ps.setInt(6, objeto.getAnimal().getNumero());
            }
            ps.setInt(7, objeto.getParcelas());
            ps.setDate(8, ConverteData.formataData(objeto.getData_primeiro_vencimento()));
            ps.setInt(9,objeto.getCodigo());
            ps.execute();

            for (int i = 0; i < objeto.getParcelas(); i++) {
                Parcelas par = new Parcelas();
                par.setNumero(i+1);
                par.setData_ven(objeto.getData_primeiro_vencimento());
                par.setValor(objeto.getValor() / objeto.getParcelas());
                par.setCodigo(objeto);

               

                ControleModeloParcelas cmp = new ControleModeloParcelas();
                cmp.inserir(par);

            } 
            return true;

        } catch (Exception ex) {
            System.out.println(ex.getMessage());

            return false;
        }
    }

ele funciona inserindo as parcelas tipo se colocar 3 parcelas ele insere 3 datas iguais
eu queri que ele incrementasse a data
deu para entender?

mauricioadl

o que eu fiz pra vc eh exatamente isso ele incrementa a data a cada 30 dias, basta vc adicionar o codigo no local onde voce passa a data para o banco de dados.

jaissonduarte

como ficaria então?

mauricioadl
jaissonduarte:
como ficaria então?

depois do guj ta facil programar em java. :?

public boolean inserir(Gastos objeto) {
        objeto.setCodigo(obtemproximocodigo());
        String sql = "INSERT INTO gastos (descricao, data, valor, ie_fazenda, cod_tipo_gastos, animal, parcelas, data_primeiro_vencimento, codigo) VALUES (?,?,?,?,?,?,?,?,?)";
        try {
            PreparedStatement ps = Conexao.getConexao().prepareStatement(sql);
            ps.setString(1, objeto.getDescricao());
            ps.setDate(2, ConverteData.formataData(objeto.getData()));
            ps.setDouble(3, objeto.getValor());
            ps.setLong(4, objeto.getFazenda().getIe());
            ps.setInt(5, objeto.getTipo_gastos().getCodigo());

            if (objeto.getAnimal() == null) {
                ps.setNull(6, Types.INTEGER);
            } else {
                ps.setInt(6, objeto.getAnimal().getNumero());
            }
            ps.setInt(7, objeto.getParcelas());
            ps.setDate(8, ConverteData.formataData(objeto.getData_primeiro_vencimento()));
            ps.setInt(9,objeto.getCodigo());
            ps.execute();

            // cria o objeto calendar
            GregorianCalendar gc = new GregorianCalendar();
            // adiciona a data inicial
            gc.setTime(objeto.getData_primeiro_vencimento());
            for (int i = 0; i < objeto.getParcelas(); i++) {
                Parcelas par = new Parcelas();
                par.setNumero(i+1);
                // adiciona a data
                par.setData_ven(gc.getTime());
             // incrementa 30 dias
                gc.set(GregorianCalendar.DAY_OF_MONTH, gc.get(GregorianCalendar.DAY_OF_MONTH) + 30);
                par.setValor(objeto.getValor() / objeto.getParcelas());
                par.setCodigo(objeto);

               

                ControleModeloParcelas cmp = new ControleModeloParcelas();
                cmp.inserir(par);

            } 
            return true;

        } catch (Exception ex) {
            System.out.println(ex.getMessage());

            return false;
        }
    }
jaissonduarte

meu valeu mesmo funcionou
mas estranho é que ele não aumenta o ano
tipo quando eu coloco a data de hoje
ele incrementa os meses mas o ano continua o mesmo
pelo menos está quase funcionando só falta o ano

pmlm
gc.add(GregorianCalendar.DAY_OF_MONTH, 30);

Já agora, tu queres mesmo adicionar 30 dias, ou queres adicionar um mês? Nesse caso seria:

gc.add(GregorianCalendar.MONTH, 1);
mauricioadl
gc.add(GregorianCalendar.DAY_OF_MONTH, 30);

Já agora, tu queres mesmo adicionar 30 dias, ou queres adicionar um mês? Nesse caso seria:

gc.add(GregorianCalendar.MONTH, 1);

bom saber do add. :smiley:

“morrendo e aprendendo!”

M

Olá pessoal, esse código me auxiliou bastante, mas como sou iniciante em programação, não sei como fazer para um jtextfield receber o numero de parcelas q eu digitar em:

int numPar = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de parcelas"));

fiz o mais óbvio: tf_qtdparc = numPar; mas diz q os tipos são incompatíveis… lógico, só não sei como resolver!
E tbm, tenho um jtextfield contendo o valor total da compra, e gostaria q ele no final dependendo da quantidade de parcelas digistadas recebesse o calculo:
tf_valorparc.setText(String.valueOf(Double.parseDouble(tf_qtdparc.getText()) Double.parseDouble(tf_somatotalparc.getText())));
Me ajudem por favor! Segue o código todo:

GregorianCalendar gc = new GregorianCalendar(); int numPar = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de parcelas")); //tf_qtdparc = numPar; Date diaAtual = new Date(); for (int e = 0; e < numPar; e++) { gc.setTime(diaAtual); gc.roll(GregorianCalendar.MONTH, e); // gc.add(GregorianCalendar.MONTH, 1); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Date d = gc.getTime(); if(d.equals(diaAtual)){ System.out.print("Entrada "); }else{ System.out.print("Parcela " + e + ": "); } System.out.println(df.format(d)); } /*tf_valorparc.setText(String.valueOf(Double.parseDouble(tf_qtdparc.getText()) / Double.parseDouble(tf_somatotalparc.getText())));*/ }
Obs:Como posso mostrar mais de uma data de vencimento em um jtable?

Criado 14 de dezembro de 2011
Ultima resposta 24 de out. de 2013
Respostas 9
Participantes 4