Java - Buscador

 
Vista:
Imágen de perfil de Alejandro
Val: 38
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Buscador

Publicado por Alejandro (21 intervenciones) el 22/10/2019 14:15:53
No me tira ningún error, solo que no me carga los jtext con los valores de las variables de la consulta sql. Lo hago con dos jfram por falta de espacio en el jfram principal para anexar otra tabla.

En el jfram principal tengo la función de búsqueda:

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
33
34
35
36
37
38
39
40
41
42
43
private void btnbuscaActionPerformed(java.awt.event.ActionEvent evt) {
    buscador abrir = new buscador();
    abrir.setVisible(true);
}
 
public void buscar(){
    String cod = "";
    String nombre = "";
    String domicilio = "";
    String dnicuit = "";
    String cod2 = "";
    buscador busca = new buscador();
    PreparedStatement pst = null;
    ResultSet rs = null;
    cod2 = cod1;
    JOptionPane.showMessageDialog(null,cod2);
    try{
        String sql = "SELECT cod, cliente, direccion, dnicuit FROM clientes WHERE cod = "+cod2+"";
        pst =connect().prepareStatement(sql);
        rs = pst.executeQuery();
        while(rs.next()){
            cod = rs.getString("cod");
            nombre = rs.getString("cliente");
            domicilio = rs.getString("direccion");
            dnicuit = rs.getString("dnicuit");
            JOptionPane.showMessageDialog(null,cod+nombre+domicilio+dnicuit);
            txtcodcliente.setText(cod);
            txtnombre.setText(nombre);
            txtdomicilio.setText(domicilio);
            txtdnicuit.setText(dnicuit);
        }
    }catch(SQLException e){
        System.err.println("Error" + e);
    }finally{
        try{
            if (connect() != null && !connect().isClosed()) {
                connect().close();
            }
        }catch (SQLException ex) {
                ex.printStackTrace(System.out);
        }
    }
}

Y en el jfram secundario llamo a esa función de búsqueda al seleccionar un registro de la tabla

1
2
3
4
5
6
7
8
public String cod1;
 
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    cod1 = tablacliente.getValueAt(tablacliente.getSelectedRow(), 0).toString();
    ventas mandar = new ventas();
    mandar.buscar();
    this.dispose();
}

La conexión a la base de datos la tengo en una clase aparte y solo la voy importando en los distintos jfram. Verifique con mensajes por consola si la consulta SQL se realiza o si la variable tiene algún valor y me da que si, por eso no entiendo cuando las asigno con el setText() no me cargan los jtext..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Buscador

Publicado por pablo (238 intervenciones) el 22/10/2019 16:00:37
Hola que tal Alejandro, bueno ya veo que has intentado todo lo recomendado, bien por ver que te llega directamente los datos de la base de datos, ahora bien algo para descartar y ver que los setText sirven apropiadamente podrías pasarle directamente un valor de string al set text es decir :

1
txtnombre.setText("Alejandro");

Todo esto con el fin de corroborar que no hay problrma con las variables que creaste.

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 Alejandro
Val: 38
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Buscador

Publicado por Alejandro (21 intervenciones) el 22/10/2019 16:05:19
Por mas que le ponga un valor String directamente al jtext no me rellena el jtext, sigue vacío. Incluso probé cambiando los jtext de privado a públicos. Es la primera vez que me pasa algo así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Buscador

Publicado por pablo (238 intervenciones) el 22/10/2019 16:37:59
mmmmm ya veo, bueno he de suponer que todo los txtnombre y los demás estan inicializados correspondientes como un jtextfield, que tu setvisible general donde muestras la ventana está de ultimo. Creo que también le debe faltar algún tipo de evento a tu boton para que al momento de que haga click ejecute la acción que le estas pidiendo .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gustavo
Val: 12
Ha disminuido su posición en 21 puestos en Java (en relación al último mes)
Gráfica de Java

Buscador

Publicado por Gustavo (4 intervenciones) el 24/10/2019 14:30:56
ya que estas usando un prepareStatement cambia la sentencia Sql de la linea 18
1
String sql = "SELECT cod, cliente, direccion, dnicuit FROM clientes WHERE cod = ?";
y agrega después de la linea 19
pst.setString(1,cod2);

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Buscador

Publicado por Franklin (179 intervenciones) el 26/10/2019 18:45:23
Intenta esto:
Si estas mandando la información de un Jframe a otro yo te recomendaría lo siguiente:

En el Jframe Principal (ventas) donde obtendrás el resultado de la búsqueda vuelve los objetos (jTextField,RadioButton,etc) como Public Static.

Una vez hecho la consulta en tu Frame Secundario ( buscador ) manda los valores de la siguientes manera.

mandar.txtcodcliente.setText(cod);
mandar.txtnombre.setText(nombre);
mandar.txtdomicilio.setText(domicilio);
mandar.txtdnicuit.setText(dnicuit);

Habiendo definido al formulario Frame "ventas" dentro de "buscador" como ----- Private ventas mandar;
En el caso de que hagas Private/Public ventas mandar = new ventas();

defines una nueva instancia de ese Frame ventas, por lo que aunque le mandes los valores estos no se visualizarán a menos que visualices la nueva instancia como mandar.setVisible(true);



Por otra parte: Sigue el consejo de Gustavo:


String sql = "SELECT cod, cliente, direccion, dnicuit FROM clientes WHERE cod = ?";
seguidamente agregas:
pst.setString(1,valorCOD);//En caso de que cod sea un Integer ---
pst.setInt(1,valorCOD);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar