boa noite coloquei um first pra ver se puxava o primeiro da lista em diante , mas ai ele puxa uma linha a menos.
ele puxa a quantidade de linhas certas do banco mas todas com o mesmo resultado
joguei um println pra ver se estava correndo certo , e pela saida ai vcs podem ver que esta certo , se precisar printo a classe get set ok .
oque vcs acham ?
Já verificou o construtor da sua classe Serviço? quando a execução cair no while, coloque um breakpoint dentro do construtor, debugue por linha, e verifique se a lista “listaservico” esta sendo populada corretamente a cada interação do while, se a lista estiver populada corretamente, verifique o metódo que alimenta o jasper.
debuga linha a linha e posta o código pra nós, ao invés de printar.Dai dá pra ver melhor e ver todo o código.
é a lista que esta recebendo errado mas, revirei aqui e nao entendi porque ela recebe os valores errados.
no while se passa certinho os valores , mas a lista é preenchida errada
try {
String subrelatorio = "select * from servicos where COD_VENDA ='"+CODVEND.getText()+"'" ;
con.ExecutaSQL(subrelatorio);
while (con.resultset.next()) {
listaservico.add(new servico(con.resultset.getString(“servico”), con.resultset.getString(“quantida”), con.resultset.getString(“valor”)));
/* System.out.println(con.resultset.getString(“servico”));
System.out.println(con.resultset.getString(“quantida”));
System.out.println(con.resultset.getString(“valor”));*/
}
} catch (SQLException ex) {
Logger.getLogger(servico.class.getName()).log(Level.SEVERE, null, ex);
}
sera que fiz algo errado no contrutor da classe servico ?
package programa;
public class servico {
static private String servico ;
static private String quantidade ;
static private String valor ;
public servico( String servico , String quantidade , String valor){
this.servico = servico;
this.quantidade = quantidade ;
this.valor = valor ;
}
public String getServico() {
return servico;
}
public void setServico(String servico) {
this.servico = servico;
}
public String getQuantidade() {
return quantidade;
}
public void setQuantidade(String quantidade) {
this.quantidade = quantidade;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
}
ja revieirei aqui mas nao entendo , a quantidade de valores que tem que aparecer vem normal mas todos com o ultimo valor da listaaa , é como se estivese sobreescrendo , mas por estar com o new nao era pra estar neh ?
posso ver sua classe de conexão com o Banco, bem como seu ExecutaSQL(),
tem alguma coisa errada ai.
opa
so vc pra salvar sandrao vo te mandar .
package programa;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
-
@author Mauro
*/
public class conexao {
private String driver = “com.mysql.jdbc.Driver”;
private Connection conexao ;
public Statement statement ;
public ResultSet resultset ;
public conexao(){
}
public boolean conectar (String url,String Usuario,String senha){
try {
Class.forName(driver);
conexao = DriverManager.getConnection(“jdbc:mysql://localhost:3306/caixa?zeroDateTimeBehavior=convertToNull”,“root”,“evolution”);
return true;
} catch (Exception e) {
return false;
}
}
public static Connection createConnection(){
String url = “jdbc:mysql://localhost:3306/caixa?zeroDateTimeBehavior=convertToNull”; //Nome da base de dados
String user = “root”; //nome do usuário do MySQL
String password = “evolution”; //senha do MySQL
Connection conexao = null;
return conexao;
}
public boolean desconectar() {
try {
conexao.close();
return true ;
} catch (Exception e) {
return false ;
}
}
public boolean ExecutaSQL(String sql){
try {
statement = conexao.createStatement();
resultset = statement.executeQuery(sql);
return true ;
} catch (Exception ex) {
System.out.println(ex.getMessage());
return false ;
}
}
/TESTE METODO UPDATE PARA INSERT UPDATE E DELETE/
public boolean Executaupdate(String up){
try {
statement = conexao.createStatement();
statement.executeUpdate(up);
return true ;
} catch (Exception ex) {
System.out.println(ex.getMessage());
return false ;
}
}
/TESTE METODO UPDATE PARA INSERT UPDATE E DELETE/
String resultset(String nome_carro) {
throw new UnsupportedOperationException(“Not supported yet.”); //To change body of generated methods, choose Tools | Templates.
}
}
pode pedir oque precisar cara to procurando o erro aqui tambem mas ta complicado , vlew sandro .
passa a classe onde está o método resultset.
pra pegar o resultset eu sempre estancio a classe conexao e pego o resultset de dentro do metodo ExecutaSQL
public boolean ExecutaSQL(String sql){
try {
statement = conexao.createStatement();
resultset = statement.executeQuery(sql);
return true ;
} catch (Exception ex) {
System.out.println(ex.getMessage());
return false ;
}
}
conexao con = new conexao();
con.resultset
sera que é por isso ?
é está bem confuso.
ainda estou tentando entender
se quiser que eu faça outra classe de de conexao aqui eu faço , mas usei ela puxando o resultset assim no programa inteiro ate agora nao deu problema .
não é necessário, só que é melhor usar o ResultSet local, pra ficar mais claro também.
tenta fazer assim
try {
String subrelatorio = "select * from servicos where COD_VENDA ='"+CODVEND.getText()+"'" ;
con.ExecutaSQL(subrelatorio);
ResultSet rs = con.resultset;
while (rs.next()) {
listaservico.add(new servico(con.resultset.getString("servico"), con.resultset.getString("quantida"), con.resultset.getString("valor")));
/* System.out.println(con.resultset.getString("servico"));
System.out.println(con.resultset.getString("quantida"));
System.out.println(con.resultset.getString("valor"));*/
}
} catch (SQLException ex) {
Logger.getLogger(servico.class.getName()).log(Level.SEVERE, null, ex);
}
testa e vê os resultados
outra coisa você já debugou o código?
debugando você sabem em que momento exato não está adicionando o primeiro objeto na lista.
é veio repetido ainda , nunca debuguei codigo , vou dar uma olahda como faz no youtube, e volto a te falar aqui oque deu vlew
se der um System.out.println(); na lista ela imprime normal?
faz o seguinte DEPOIS de popular a listaservico
você cria um for
que percorre a lista e imprime os resultados. assim
for (int i = 0; i < listaservico.size(); i++) {
System.out.println(listaservico.get(i).getServico());
System.out.println( listaservico.get(i).getQuantidade());
System.out.println( listaservico.get(i).getValor());
}
caso sim então o problema pode ser no seu Relatório.
eu fiz os valores imprimem repetidos tambem vou te mandar um print
primeiro executo o formulario depois clico no botao exibir lista pra pegar oque foi carregado blz , e sai repetido é na lista que esta gravando errado neh só pode , mas o porque sera ? kkk , o laço while passa um de cada vez certinho que nem vc ja viu
ow é algo aqui
listaservico.add(new servico(con.resultset.getString(“servico”), con.resultset.getString(“quantida”), con.resultset.getString(“valor”)));
ow algo na classe serviço neh ?
revirando aqui …
vou fazer do jeito que vc me pediu pra vc ver tambem .
e nesse ponto aqui, sai repetido?
while (con.resultset.next()) {
listaservico.add(new servico(con.resultset.getString("servico"), con.resultset.getString("quantida"), con.resultset.getString("valor")));
/* System.out.println(con.resultset.getString("servico"));
System.out.println(con.resultset.getString("quantida"));
System.out.println(con.resultset.getString("valor"));*/
}
ative as linhas do println e veja o resultado.
nesse ponto ai nao sai repetido sai normal