Criei uma aplicação java que inseria informações no BD (Postgres) com apenas números, até então blz.
Porem agora eu preciso criar um outra aplicação (a segunda aplicação não pode ser junto com a primeiro pois ficarão em locais diferentes com processos diferentes). Esta aplicação precisa pegar as informações que foram jogadas no banco pela primeira aplicação e realizar alguns cálculos, e é isso que esta pegando, eu consigo pegar estas informações e exibir numa jtable, porem realizar operações com elas não esta sendo possível.
eu preciso pegar um registro começado e comparar com outro que já foi finalizado, dendo a hora e data de inicio e fim de ambos registros, para saber quanto tempo demorou para realizar o processo.
Se já consegue pegar as informações já da para fazer fazer os cálculos.
Poste o código de como está pegando as informações e o código da parte na qual quer realizar o cálculo. Assim fica mais fácil de ver como você está pegando as informações, o quanto de informação tem e onde está tendo dificuldade para realizar os cálculos.
R
Rodrigos_Bragas
Se você consegue buscar suas informações no banco de dados, mas não consegue realizar os cálculos com os valores… Pode ser que seus valores não sejam totalmente numéricos. Talvez até tenha apenas números e ponto no lugar de virgula, mas talvez o campo no qual você salvou esse valor, seja do tipo String, Text ou qualquer outro que não seja numérico.
Para resolver isso, ou você troca o tipo do campo (toda coluna), que é a forma mais correta. Ou então, ao buscar os dados do banco, você converte na sua aplicação para o tipo numérico.
M
marcos-hrm
Ola, desculpa a demora…
Então estou usando um JtableModel para lançar as informações no JTable
publicvoidpreencherTabela(StringSQL){ArrayListdados=newArrayList();String[]colunas=newString[]{"Op","C.C","Operador","Status","Data","Hora"};con.conexao();con.executaSQL(SQL);try{con.rs.first();do{dados.add(newObject[]{con.rs.getString("op")/*getInt("op")*/,con.rs.getString("ccusto"),con.rs.getString("operador"),con.rs.getString("status"),con.rs.getString("dataatual"),con.rs.getString("horaatual")});}while(con.rs.next());}catch(SQLExceptionex){JOptionPane.showMessageDialog(rootPane,"Erro ao preencher ArrayList "+ex);}modeloTabelamodelo=newmodeloTabela(dados,colunas);jTableOp.setModel(modelo);jTableOp.getColumnModel().getColumn(0).setPreferredWidth(100);jTableOp.getColumnModel().getColumn(0).setResizable(false);jTableOp.getColumnModel().getColumn(1).setPreferredWidth(60);jTableOp.getColumnModel().getColumn(1).setResizable(false);jTableOp.getColumnModel().getColumn(2).setPreferredWidth(60);jTableOp.getColumnModel().getColumn(2).setResizable(false);jTableOp.getColumnModel().getColumn(3).setPreferredWidth(45);jTableOp.getColumnModel().getColumn(3).setResizable(false);jTableOp.getColumnModel().getColumn(4).setPreferredWidth(80);jTableOp.getColumnModel().getColumn(4).setResizable(false);jTableOp.getColumnModel().getColumn(5).setPreferredWidth(85);jTableOp.getColumnModel().getColumn(5).setResizable(false);jTableOp.getTableHeader().setReorderingAllowed(false);jTableOp.setAutoResizeMode(jTableOp.AUTO_RESIZE_OFF);//não pode redimentsionar a tabelajTableOp.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);con.desconecta();}
Eu consigo jogar as informções na tabela, mas agora eu preciso selecionar apenas um tipo de informação pegar ela e realizar alguns calculos, por exemplo, na entrada de dados eu tenho os campos (Op, CentroCusto, Operador, DataAtual, HoraAtual) em sequencia. Ja tenho muitos registro pois este programa esta em uma fabrica. Agora eu preciso pegar um registro pela Op e ver pelo Status (1 inicio 2 fim) o tempo que demorou para aquela Op ser trabalhada no CentroCusto.
M
marcos-hrm
Alguem?
R
Rodrigos_Bragas
Se você vai fazer cálculos, você vai usar os operadores do JAVA, não frameworks. Isso você já saber né?
Você disse que consegue pegar os valores. Consegue mesmo? Tente imprimir os valores sem calcular no console para ter certeza. Crie um método main e use o System.out.println(variavelValor);
Beleza! Imprimiu os valores corretos, OK! Não existe mais problemas complexos, o que está acontecendo é que os valores, não são numéricos, mesmo sendo números, o problema é que eles são do tipo String (não misture variável int, com variável double também). Veja como você pega eles do seu SQL:
con.rs.getString("op");
O certo é usar con.rs.getInteger(“op”), con.rs.getDouble(“op”), con.rs.getLong(“op”), etc…
Se vai usar getString() para números(são mesmo números? Já imprimiu no console para ter certeza?), então é obrigatório converte-los para o tipo de variável correta.
R
Rodrigos_Bragas
E outra:
con.rs.first();con.rs.next();
Você pegou o primeiro valor que o executaSQL(SQL) trouxe do banco, ou seja, você só tem UM objeto, não UMA LISTA. Ai você depois tenta fazer isso con.rs.getString(“op”);. De onde vem algum valor? Para pegar algum valor, você devia pelo menos ter salvo o con.rs.first(); em uma variável, e pegado a partir dessa variável do tipo object, ou então, con.rs.first().getString(“op”);.
Mas isso você não deve fazer! Você deve é buscar uma lista, criar um loop, e só então pegar os objetos, um por um.
Eu percebi que você tentou criar a lista e adicionar os SQLs, mas na verdade, você já tem que trazer uma lista do banco.
R
Rodrigos_Bragas
Eu nem sei o que é JtableModel (se é para web ou desktop), mas se você estiver com dificuldades em bancos de dados que usam SQL(Banco de Dados Relacional), eu aconselho você a fazer esse curso de JDBC da tutorialspoint e esse de JPA, também da tutorialspoint.
Lá na tutorialspoint tem curso de Hibernate também além de muitos outros, caso se interesse. Os materiais são os melhores que já encontrei, além de serem totalmente gratuitos. Todos eles estão em inglês, mas você pode usar o Google Chrome para traduzir todas as paginas. Basta apenas clicar com o botão direito do mouse e em Traduzir para o Português.
M
marcos-hrm
Rodrigo_Braga eu estou tentando por um outro método, acho que pode facilitar um pouco mais minha programação e o entendimento dos usuários, eu estou distribuindo as informações em jTextField’s, só que não estou conseguindo utilizar uma segunda seleção da tabela utilizando o MULTIPLE_INTERVAL_SELECTION, quando eu clico ele preenche os primeiros, porem não consigo fazer com que minha segunda seleção preencha outros jtextFields.
este é o método para passar as informações para as jTextField:
Se alguém sabe como posso pegar a segunda seleção e colocar em outras jTextField, o resto vai ficar facil pois ai eu posso comparar os textos e realizar os cálculos necessários
R
Rodrigos_Bragas
Abre um tópico novo para essa duvida de jTextField, em especifico. Aí a galera que entende de java para desktop, JPanel ou Jframe, vai te ajudar. Porque com esse tópico, a pessoa só vai achar que você quer buscar um dado do banco e fazer algumas operações na sua aplicação. Criar um “NOVO” tópico é sua melhor chance.