How to add two tables in the same Arraylist

Asked

Viewed 2,753 times

1

Nesta Imagem tem a tela que deve carregar os itensHow do I add two tables in the same ArrayList?

My code: {

public ArrayList SQLConsultagetTodos_Completo() {
    String auxtexto=edtCodigoMovimento.getText();
    int codigomovimento=Integer.parseInt(auxtexto);
    //JOptionPane.showMessageDialog(null, "Codigo Movimento passado: "+auxcodigomovimento);
    String SQLConsulta_itens_dav="select itens_orc_simples.* from itens_orc_simples" +
    "inner join produto_simples on produto_simples.cd_ref=itens_orc_simples.cd_refer_pro" +
    "where itens_orc_simples.cd_movimento=?";       

    ArrayList listaitens = new ArrayList();
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        pstmt = conn.prepareStatement(SQLConsulta_itens_dav);
        pstmt.setInt(1,codigomovimento);
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int auxquantidade=rs.getInt("qt_ite_pro");
            Double auxpreco=rs.getDouble("vl_ven_ite_pro");
            Double auxvl_custo=rs.getDouble("vl_cus_ite_pro");
            int auxcd_ref = rs.getInt("CD_REFER_PRO");
            int auxcd_usuario = rs.getInt("cd_usuario");
            int auxcd_filial = rs.getInt("cd_filial");
            int auxcd_seq_ite_pro = rs.getInt("cd_seq_ite_pro");

            VendaProdutoClassse  venpro= new VendaProdutoClassse(
                    auxquantidade,
                    auxpreco,
                    auxcd_ref,
                    auxcd_filial,
                    codigomovimento,
                    auxcd_seq_ite_pro,
                    auxcd_usuario,
                    auxvl_custo                       
            );
            listaitens.add(venpro);
         }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql, SQLConsultagetTodos_Completo:\n"
                 + erro.getMessage());
    } finally {
        Conexao.closeAll(conn);            
    }
    return listaitens;
}

I have another method that calls this method and click on the screen:

public void ListaItensCompleto() {
    DefaultTableModel modelo = new DefaultTableModel();
    modelo.addColumn("Codigo");
    modelo.addColumn("Nome");
    modelo.addColumn("Quantidade");        
    modelo.addColumn("Preco");
    ArrayList<VendaProdutoClassse> itens = SQLConsultagetTodos_Completo();

    for (VendaProdutoClassse auxitens : itens) {
        modelo.addRow(new Object[]{
            auxitens.getProduto(),
            auxitens.getQuantidade(),
            auxitens.getPreco()
        });
    }
    TabelaProdutos.setModel(modelo);
}

How do I add more of this product table in it arrayList above?

public ArrayList getTodos() {
    ArrayList listaProduto = new ArrayList();
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        stmt = conn.createStatement();
        rs = stmt.executeQuery(sqlTodos);
        //OBSERVE MUITO IMPORTANTE!!!!!
        //NAO DEIXAR ESPAÇOS,POIS DA ERROS DEPOIS!!!!
        while (rs.next()) {
            //Campos Inteiros
            //NÃO DEIXAR ESPAÇOS!!!!!!
            int CD_PROD = rs.getInt("CD_PROD");
            String DS_PROD = rs.getString("DS_PROD");
            int CD_GRUPO = rs.getInt("CD_GRUPO");
            int CD_SUB_GRUPO = rs.getInt("CD_SUB_GRUPO");
            int FG_ATIVO = rs.getInt("FG_ATIVO");
            int CD_COR = rs.getInt("CD_COR");
            String CD_FABRICA = rs.getString("CD_FABRICA");
            int CD_MARCA = rs.getInt("CD_MARCA");
            int CD_GP_FISCAL = rs.getInt("CD_GP_FISCAL");
            int CD_NCM_SH = rs.getInt("CD_NCM_SH");
            int CD_REF = rs.getInt("CD_REF");

            //Campos String
            //NÃO DEIXAR ESPAÇOS!!!!!!
            Produto_Simples produto = new Produto_Simples(
                    CD_PROD,
                    CD_GRUPO,
                    CD_SUB_GRUPO,
                    FG_ATIVO,
                    CD_COR,
                    CD_FABRICA,
                    CD_MARCA,
                    CD_GP_FISCAL,
                    CD_NCM_SH,
                    CD_REF,
                    DS_PROD);
            listaProduto.add(produto);
        }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql, getTodos(): \n" + erro.getMessage());
    } finally {
        Conexao.closeAll(conn);
        return listaProduto;
    }
}

}

How the image shows what I need and the product name is loaded on the screen.

When I record on this screen the items is passed as records the data below: -Product Code (auxitens.getProdut(), -Quantity of Product (auxitens.getQuantidade(), -Product Price (auxitens.getPreco()

Estes dados são gravado numa tabela de nome itens_orc_simples ->Que sao os itens do pedido

E o nome do produto deve ser carregado com o codigo do produto e deve ser buscado
da classe:
Produto_Simples

That when it is loaded on the screen comes from this List Methodthe complete()

Below Product Class Simple:

public class Produto_Simples {
int CD_PROD,
    CD_GRUPO,
    CD_SUB_GRUPO,
    FG_ATIVO,
    CD_COR,
    CD_MARCA,
    CD_GP_FISCAL,
    CD_NCM_SH,
    CD_REF;
String DS_PROD, CD_FABRICA;

public Produto_Simples(int CD_PROD, int CD_GRUPO, int CD_SUB_GRUPO, int FG_ATIVO, int CD_COR, String CD_FABRICA, int CD_MARCA, int CD_GP_FISCAL, int CD_NCM_SH, int CD_REF, String DS_PROD) {
    this.CD_PROD = CD_PROD;
    this.CD_GRUPO = CD_GRUPO;
    this.CD_SUB_GRUPO = CD_SUB_GRUPO;
    this.FG_ATIVO = FG_ATIVO;
    this.CD_COR = CD_COR;
    this.CD_FABRICA = CD_FABRICA;
    this.CD_MARCA = CD_MARCA;
    this.CD_GP_FISCAL = CD_GP_FISCAL;
    this.CD_NCM_SH = CD_NCM_SH;
    this.CD_REF = CD_REF;
    this.DS_PROD = DS_PROD;
}

public int getCD_PROD() {
    return CD_PROD;
}

public void setCD_PROD(int CD_PROD) {
    this.CD_PROD = CD_PROD;
}

public int getCD_GRUPO() {
    return CD_GRUPO;
}

public void setCD_GRUPO(int CD_GRUPO) {
    this.CD_GRUPO = CD_GRUPO;
}

public int getCD_SUB_GRUPO() {
    return CD_SUB_GRUPO;
}

public void setCD_SUB_GRUPO(int CD_SUB_GRUPO) {
    this.CD_SUB_GRUPO = CD_SUB_GRUPO;
}

public int getFG_ATIVO() {
    return FG_ATIVO;
}

public void setFG_ATIVO(int FG_ATIVO) {
    this.FG_ATIVO = FG_ATIVO;
}

public int getCD_COR() {
    return CD_COR;
}

public void setCD_COR(int CD_COR) {
    this.CD_COR = CD_COR;
}

public String getCD_FABRICA() {
    return CD_FABRICA;
}

public void setCD_FABRICA(String CD_FABRICA) {
    this.CD_FABRICA = CD_FABRICA;
}

public int getCD_MARCA() {
    return CD_MARCA;
}

public void setCD_MARCA(int CD_MARCA) {
    this.CD_MARCA = CD_MARCA;
}

public int getCD_GP_FISCAL() {
    return CD_GP_FISCAL;
}

public void setCD_GP_FISCAL(int CD_GP_FISCAL) {
    this.CD_GP_FISCAL = CD_GP_FISCAL;
}

public int getCD_NCM_SH() {
    return CD_NCM_SH;
}

public void setCD_NCM_SH(int CD_NCM_SH) {
    this.CD_NCM_SH = CD_NCM_SH;
}

public int getCD_REF() {
    return CD_REF;
}

public void setCD_REF(int CD_REF) {
    this.CD_REF = CD_REF;
}

public String getDS_PROD() {
    return DS_PROD;
}

public void setDS_PROD(String DS_PROD) {
    this.DS_PROD = DS_PROD;
}

}

}

  • Then pass another method calling on the screen this data:

  • use the "code sample {}" to format your code properly

  • What is the value of sqlTodos?

  • 1

    @user8014 Please clarify what you are trying to do. One list has one type of object (Vendaprodutoclassse) and the other has another (Producto_simple). Do you really want to merge the two types of objects into one list? With what intention? Or if not, what do you really want to do?

2 answers

3

For you to add all the elements of the return Arraylist of a single-time method in an existing Arraylist use the method addAll(). Example:

import java.util.*;
public class Teste {
    public static void main(String[] args) {
        List lista = new ArrayList();
        lista.add("um");
        lista.add("dois");
        lista.addAll(maisLista());//adiciona todos os elementos no ArrayList já existente
        System.out.println(lista);
    }
    public static List maisLista() {
        List outraLista = new ArrayList();
        outraLista.add("tres");
        outraLista.add("quatro");
        return outraLista;
    }
}

I created the above example to illustrate, since I don’t know which class to call your method getTodos() that returns the Arraylist you want to group in your first Arraylist.

Reference: Arraylist - Java SE7

  • I believe that the problem of OP is "lower". One of the lists has class objects VendaProdutoClassse and the other of the class Produto_Simples. Does he really want to form a single heterogeneous list containing the two types of objects? Or does he want to display the two lists side by side on the screen? Or some other option? Not entirely clear on the question.

  • 1

    You’re right, I hope the answer serves at least then for the author to clarify the doubt, which is not at all clear

  • Piovezan, The Sqltodos Method searches an Arraylist all products of the database

0

Solved by myself this way:

public void ListaItensCompleto() {
    DefaultTableModel modelo = new DefaultTableModel();
    modelo.addColumn("Codigo");
    modelo.addColumn("Nome");
    modelo.addColumn("Quantidade");
    modelo.addColumn("Preco");
    habilitaCampos(true);
    int aux_sequencia = 1;//Pega a sequencia
    int aux_contador = 1;   //Pega a sequencia do item
    int aux_movimento = Integer.parseInt(edtCodigoMovimento.getText());

    ArrayList<ProdutoSimples> produtosimples = SQLCarregaNomeItens();

    VendaProdutoDB venprodb = new VendaProdutoDB();
    //aqui verifica se existe item desta venda
    if (venprodb.getProdutoDaVenda(aux_movimento, aux_sequencia)) {
        aux_sequencia = 0;
        for (ProdutoSimples auxprodutosimples : produtosimples) {
            modelo.addRow(new Object[]{
                auxprodutosimples.getCd_ref(),
                auxprodutosimples.getDs_prod()
            });
            TabelaProdutos.setModel(modelo);
            //Programacao do valor e quantidade
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            for (int x = aux_sequencia; x < TabelaProdutos.getRowCount(); x++) {
                try {
                    conn = Conexao.getConexao();
                    pstmt = conn.prepareStatement(sqlBuscaQuantidadeEPreco);
                    pstmt.setInt(1, aux_movimento);
                    pstmt.setInt(2, aux_contador);
                    rs = pstmt.executeQuery();
                    while (rs.next()) {
                        int aux_quantidade = rs.getInt("QT_ITE_PRO");
                        double aux_preco = rs.getDouble("VL_VEN_ITE_PRO");
                        TabelaProdutos.getModel().setValueAt(aux_quantidade, x, 2);
                        TabelaProdutos.getModel().setValueAt(aux_preco, x, 3);
                    }
                } catch (SQLException erro) {
                    JOptionPane.showMessageDialog(null, "Erro no sql, Nome Produto Itens:\n" + erro.getMessage());
                } finally {
                    Conexao.closeAll(conn);
                }
            }
            aux_sequencia++;//Incrementa a sequencia
            aux_contador++; //Incrementa a sequencia do banco de dados               
        }
    } else {
        JOptionPane.showMessageDialog(null, "Não existe itens nesta venda!");
        edtCodigoProduto.requestFocus();
    }
}

Where the method venprodb.getProdutoDaVenda(aux_movimento, aux_sequencia) search for sales data in relation to this item, the sales movement code and the primary key of the item which is the sequence field.

Below programming of the method venprodb.getProdutoDaVenda(aux_movimento, aux_sequencia)

public boolean getProdutoDaVenda(int cd_movimento, int aux_sequencia) {
    boolean existe = false;
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        pstmt = conn.prepareStatement(sqlConsultaProdutodaVenda);
        pstmt.setInt(1, cd_movimento);
        pstmt.setInt(2, aux_sequencia);
        rs = pstmt.executeQuery();
        while (rs.next()) {
            existe = rs.getInt("CD_SEQ_ITE_PRO") > 0;
        }
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Erro de SQL. getProdutoDaVenda(): \n" + e.getMessage());
    } finally {
        Conexao.closeAll(conn);
    }
    return existe;
}

SQL sqlConsultProduceVenda is:

private static final String sqlConsultaProdutodaVenda
        = "SELECT                             "
        + "ITENS_ORC_SIMPLES.cd_movimento,    "
        + "ITENS_ORC_SIMPLES.CD_SEQ_ITE_PRO   "
        + "FROM                               "
        + "    ITENS_ORC_SIMPLES              "
        + "WHERE                              "
        + "ITENS_ORC_SIMPLES.cd_movimento=?   "
        + "AND                                "
        + "ITENS_ORC_SIMPLES.CD_SEQ_ITE_PRO=? "
        + "ORDER BY 2;                        ";

In short:
If the return is true in the method getProduct,
i pass the product data through this method:
Arraylist products = Sqlcarreganomeitems();
Where Sqlcarreganomeitems();
is like this:

public ArrayList SQLCarregaNomeItens() {
    String auxtexto = edtCodigoMovimento.getText();
    int codigomovimento = Integer.parseInt(auxtexto);
    String SQLConsulta_itens_dav =
            "  select                                                           "
            + "     produto_simples.*                                           "
            + "from                                                             "
            + "     itens_orc_simples                                           "
            + "     left outer join produto_simples                         "
            + "     on produto_simples.cd_ref=itens_orc_simples.cd_refer_pro    "
            + " where                                                           "
            + "     itens_orc_simples.cd_movimento=?                            ";

    ArrayList listaProduto = new ArrayList();

    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        pstmt = conn.prepareStatement(SQLConsulta_itens_dav);
        pstmt.setInt(1, codigomovimento);
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int CD_PROD = rs.getInt("CD_PROD");
            String DS_PROD = rs.getString("DS_PROD");
            int CD_GRUPO = rs.getInt("CD_GRUPO");
            int CD_SUB_GRUPO = rs.getInt("CD_SUB_GRUPO");
            int FG_ATIVO = rs.getInt("FG_ATIVO");
            int CD_COR = rs.getInt("CD_COR");
            String CD_FABRICA = rs.getString("CD_FABRICA");
            int CD_MARCA = rs.getInt("CD_MARCA");
            int CD_GP_FISCAL = rs.getInt("CD_GP_FISCAL");
            String CD_NCM_SH = rs.getString("CD_NCM_SH");
            int CD_REF = rs.getInt("CD_REF");
            int cd_usuario = rs.getInt("cd_usuario");
            int cd_filial = rs.getInt("cd_filial");
            int cd_unidade_medida = rs.getInt("cd_unidade_medida");
            int qt_estoque = rs.getInt("qt_estoque");
            int tx_ipi = rs.getInt("tx_ipi");
            int tx_iss = rs.getInt("tx_iss");

            ProdutoSimples produto = new ProdutoSimples(
                    CD_PROD,
                    DS_PROD,
                    CD_GRUPO,
                    CD_SUB_GRUPO,
                    FG_ATIVO,
                    CD_COR,
                    CD_FABRICA,
                    CD_MARCA,
                    CD_GP_FISCAL,
                    CD_NCM_SH,
                    CD_REF,
                    cd_usuario,
                    cd_filial,
                    cd_unidade_medida,
                    qt_estoque,
                    tx_ipi,
                    tx_iss
            );
            listaProduto.add(produto);
        }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql,  SQLConsultagetTodos_Completo_NomeProduto(): \n" + erro.getMessage());
    } finally {
        Conexao.closeAll(conn);
    }
    return listaProduto;
}

Of course I could have created one more class and manage all the data directly through it using an object for all product and sale data, but this way would be more a file for system maintenance.

There may also be another "easy" way to do it, but in my case That’s what solves my problem. So I have only 2 classes for each table in the database,:
Product Tablesimple has the class Product Simple_simplesdb
Table Itens_orc_simple has the class Itens_orc_simple and Itens_orc_simple.

Thank you to everyone who tried to help me.
I hope I’ve helped other people too.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.