Java - Rellenar campos de texto en formulario secundario

 
Vista:
Imágen de perfil de Alejandro
Val: 47
Ha disminuido su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Rellenar campos de texto en formulario secundario

Publicado por Alejandro (21 intervenciones) el 16/10/2019 22:09:31
Tengo un formulario principal del cual se abre otro secundario que seria el buscador, donde seleccione el cliente que quiero y lo envió a la parte de detalle de clientes en el formulario principal. Lo que pasa es que cuando envió los datos los campos de textos no se rellenan.

Formulario del buscador:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static String cod1 = "";
public static String nombre1 = "";
public static String domicilio1 = "";
public static String dnicuit1 = "";
 
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        String codigo = tablacliente.getValueAt(tablacliente.getSelectedRow(), 0).toString();
        PreparedStatement pst = null;
        ResultSet rs = null;
        ventas mandar = new ventas();
        try{
            String sql = "SELECT cod, cliente, direccion, dnicuit FROM clientes WHERE cod = "+codigo+"";
            pst =connect().prepareStatement(sql);
            rs = pst.executeQuery();
            while(rs.next()){
                cod1 = rs.getString("cod");
                nombre1 = rs.getString("cliente");
                domicilio1 = rs.getString("direccion");
                dnicuit1 = rs.getString("dnicuit");
            }
        }catch(Exception e){
            System.err.println("Error" + e);
        }
        mandar.buscar();
        this.setVisible(false);

Formulario Principal:

1
2
3
4
5
6
7
8
9
10
11
12
public void buscar(){
    buscador busca = new buscador();
    String cod = busca.cod1;
    String nombre = busca.nombre1;
    String domicilio = busca.domicilio1;
    String dnicuit = busca.dnicuit1;
    JOptionPane.showMessageDialog(null,cod+nombre+domicilio+dnicuit);
    txtcodcliente.setText(cod);
    txtnombre.setText(nombre);
    txtdomicilio.setText(domicilio);
    txtdnicuit.setText(dnicuit);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de pablo
Val: 825
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Rellenar campos de texto en formulario secundario

Publicado por pablo (224 intervenciones) el 16/10/2019 22:48:13
pues mirando tu código te has fijado si la consulta que realizas no falla? o si llega todo correcto en la que haces la consulta, intenta crear una lista con los datos que te traes de SQL y la imprimes por consola para que te verifiques que todo lo que estas llamando llega bien, tampoco veo donde le pasas los parámetros de conexión a tu base de datos en el código. Un consejo nada más cuando hagas excepciones de ese tipo no la hagas general por que cuando te lancé el error no vas a saber ni por que esta fallando tu código lanza las excepciones de acuerdo a lo que estas creo que la excepción es SQLException para que más o menos te orientes de lo que estas lanzando. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.018
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Rellenar campos de texto en formulario secundario

Publicado por Billy Joel (594 intervenciones) el 17/10/2019 00:47:09
Yo te recomendaría que en lugar de usar un JFrame secundario para buscar; que uses un JPanel y entonces a través de un JOptionPane realizar la busqueda. Solo dejale la tabla; quitas el botón de buscar y la acción se la colocas a la tablacliente en evento mouseClicked.
Así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private void tablaclienteMouseClicked(java.awt.event.MouseEvent evt) {
    String codigo = tablacliente.getValueAt(tablacliente.getSelectedRow(), 0).toString();
    PreparedStatement pst;
    ResultSet rs;
    Connection cn = null;
    try {
        cn = connect();
        String sql = "SELECT cod, cliente, direccion, dnicuit FROM clientes WHERE cod = ?";
        pst = cn.prepareStatement(sql);
        pst.setString(1, codigo);
        rs = pst.executeQuery();
        while (rs.next()) {
            cod1 = rs.getString(1);
            nombre1 = rs.getString(2);
            domicilio1 = rs.getString(3);
            dnicuit1 = rs.getString(4);
        }
    } catch (SQLException e) {
        e.printStackTrace(System.out);
    } finally {
        try {
            if (cn != null && cn.isClosed()) {
                cn.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
        }
    }
}

Recuerda definir bien las propiedades. No es necesario que sean static
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private String cod1;
private String nombre1;
private String domicilio1;
private String dnicuit1;
 
/**
 * @return the cod1
 */
public String getCod1() {
    return cod1;
}
 
/**
 * @return the nombre1
 */
public String getNombre1() {
    return nombre1;
}
 
/**
 * @return the domicilio1
 */
public String getDomicilio1() {
    return domicilio1;
}
 
/**
 * @return the dnicuit1
 */
public String getDnicuit1() {
    return dnicuit1;
}

Entonces en el método buscar de tu formulario principal pondrías lo siguiente.
1
2
3
4
5
6
7
buscador busca = new buscador(); //Ahora va a ser un JPanel
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(null, busca, "Busqueda de cliente", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)) {
    txtcodcliente.setText(busca.getCod1());
    txtnombre.setText(busca.getNombre1());
    txtdomicilio.setText(busca.getDomicilio1());
    txtdnicuit.setText(busca.getDnicuit1());
}

PD: Recuerda que siempre siempre debes cerrar las conexiones a la base de datos.
PD: Deberías considedar usar una clase que se encargue de hacer las consultas a la base de datos.

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar