Java - Devolver id de un jcombobox java

 
Vista:
sin imagen de perfil

Devolver id de un jcombobox java

Publicado por victor perales fabian (10 intervenciones) el 29/09/2015 17:35:39
Agradezco de ante mano su gentil apoyo
tengo dos tablas una se llama pacientes_per y empresa
en pacientes_per (pac_codigo,pac_dnipac_nombres,pac_estado,emp_codigo)
en empresa tengo (emp_codigo,emp_descripcion)


en el jcomboxmterias visualizo un listado de empresas necesito grabar el id del regstro seleccionado en la tabla pacientes_per pero en el campo emp_codigo se graba l descripcion, como puedo hcer para que cundo seleccione un item de un jcombobox se grabe el id y no la descripcion este es mi codigo.

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
private void btnguardarActionPerformed(java.awt.event.ActionEvent evt) {
            try {
           String sql = "insert into pacientes_per(pac_dni,pac_nombres,emp_codigo,pac_estado)"
                       + "values (?,?,?,?,1)";
 
            PreparedStatement ps = Conn.prepareCall(sql);
 
            ps.setString(1, txtdni.getText());
            ps.setString(2, txtnombres.getText());
            ps.setString(3, cmbempresa.getSelectedIndex());
 
            int n = ps.executeUpdate();
            if (n > 0) {
                JOptionPane.showMessageDialog(null, "Registro Correcto");
 
            }
        } catch (SQLException | HeadlessException e) {
            JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
        }
 
        btnactualizar.setEnabled(false);
 
 
----
private void iniCboMaterias() {
 
          try {
             Conn = BD.geConnection();
             sent = Conn.createStatement();
             String sql = "select emp_codigo,emp_nombres from empresa where emp_estado='1' order by          emp_nombres";
             ResultSet rs = sent.executeQuery(sql);
           modelocboempresa.addElement("[ Elije Empresa ]");
            //Llenamos con datos el JComboBox
            while(rs.next())
                modelocboempresa.addElement(rs.getString("emp_nombres"));
 
        } catch (Exception e) {
        }
 
 
    }
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

Devolver id de un jcombobox java

Publicado por Foraneo (1 intervención) el 29/09/2015 21:03:34
Hola.
Haber si entendí.
Con este método cargas los datos en JComboBox llamado comboxmterias.
1
2
3
4
5
6
7
private void iniCboMaterias() {
          try {
             Conn = BD.geConnection();
             sent = Conn.createStatement();
             .......................................................
            -............................................
    }

Y despues guardas la información:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void btnguardarActionPerformed(java.awt.event.ActionEvent evt) {
            try {
           String sql = "insert into pacientes_per(pac_dni,pac_nombres,emp_codigo,pac_estado)"
                       + "values (?,?,?,?,1)";
            PreparedStatement ps = Conn.prepareCall(sql);
            ps.setString(1, txtdni.getText());
            ps.setString(2, txtnombres.getText());
            /*
             *** Pero aquí no veo que estés llamando a comboxmterias.
             ***Creo que te hace falta llamarlo para que obtengas el id
             ***Aquí tienes 4 campos a guardar, pero solo veo tres campos
             ***que estas llenando? 
             */
            ps.setString(3, cmbempresa.getSelectedIndex());
            //Me su pongo que el cuarto es para id que estas comentando.
            ps.setString(4, comboxmaterias.getSelectedIndex());
 
}

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
sin imagen de perfil

Devolver id de un jcombobox java

Publicado por victor perales fabian (10 intervenciones) el 30/09/2015 00:42:29
Saludos, cordiales lo que quiero grabar es el id del registro seleccionado en el jcombobox ve envio imagen
Agrege
ps.setString(3, cmbempresa.getSelectedIndex());

ps.setString(4, comboxmaterias.getSelectedIndex());

y se visualiza un error q esta detallado en la imagen
combox
error
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

Devolver id de un jcombobox java

Publicado por Foraneo (1 intervención) el 30/09/2015 02:48:04
Hola.
Si checas el mensaje de error te esta marcando que es requiere un int, String.
//Donde int es la posición del campo a guardar.
// Y el String es la cadena a guardar en tu base de datos.
ps.setString(int,String);
Te recomiendo que hagas los siguiente en donde deseas ingresar el id.
Creo que en tu base de datos el campo lo tienes como varchar o char.
1
2
int idEmpresa = cmbempresa.getSelectedIndex();//Lo alamacenas en una variable de tipo entera.
String elIDIngresar = String.valueOf(idEmpresa);//Aqui ya obtienes el id de la empresa para ingresarlo a la tabla.
Pero tengo una duda???
¿En tu tabla empresa cuenta con clave principal(ID)? Esta indexada?
Porque es mucho mas fácil ordenarla por los índices(id), ya que si vas a ingresar mas empresas y las ordenas .
Ejemplo:

1
SELECT NOMBREEMP, CALLEEMP, NUMEMP FROM empresaEjemplo WHERE NOMBREEMP = ? ORDER BY NOMBREEMP ASC;
Aquí el problema es que se van ordenar en forma descendente o ascendente según sea el caso por lo cual tu índices van a cambiar y al rato no concordaran con los registros que se hicieron anteriormente.
Bueno, Ojala que te sirva esto.
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
sin imagen de perfil

Devolver id de un jcombobox java

Publicado por victor perales fabian (10 intervenciones) el 30/09/2015 21:43:24
Estimado, las indicaciones q me distes se realizaron con exito, solo hay un inconveniente tengo un problema a grabar el campo id no conicide con el registro de la tabla
mi tabla empresa esta definidad con :
emp_codigo (int)
, emp_nombres, (char)
emp_estado (char)

emp_codigo emp_nombres emp_estao
1 VOLVOSAC 1
2 SAMSUNG 1
3 TOYOTA 0
COMO PUEDO HACER LA CONSULTA PARA Q LOS REGISTROS SE GRABEN CONFORME A SU ID Q PERTENECE
La consulta es q tengo en mi jcombobox es: select emp_codigo,emp_nombres from empresa order by emp_nombres ASC
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
sin imagen de perfil

Devolver id de un jcombobox java

Publicado por victor perales fabian (10 intervenciones) el 30/09/2015 23:30:10
Estimado probe con el codigo y no arroja el id q pertenece a la tabla empresa, mejor dicho yo quiero obtener el id, del jcombobox seleccionado y psarlo a un txt.
Este es mi codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void iniCboEmpresa() {
 
          try {
 
             Conn = BD.geConnection();
             sent = Conn.createStatement();
             String sql = "select emp_codigo,emp_nombres from empresa order by emp_codigo";
 
             ResultSet rs = sent.executeQuery(sql);
           modelocboempresa.addElement("[ Elije Empresa ]");
            //Llenamos con datos el JComboBox
            while(rs.next())
                modelocboempresa.addElement(rs.getString("emp_nombres"));
               this.txtcodemp.setText(rs.getString("emp_codigo"));  (esto n me funcion)
 
 
        } catch (Exception e) {
}
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

Devolver id de un jcombobox java

Publicado por alex (2 intervenciones) el 22/03/2018 00:54:58
pudiste resolver tu problema?? yo necesito lo mismo, llene mi combobox con nombre y quiero guardar el id en un string el id del nombre q escojan del combobox como le hago????
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
sin imagen de perfil

Devolver id de un jcombobox java

Publicado por Juan Francisco (58 intervenciones) el 22/03/2018 21:11:34
Lo primero que se me ocurrio fue una Lista con los id a la vez que rellenas el Combo box , despues solo tienes que coger el getSelectedIndex , y ese indice sera la poscion de la array list de id asi puedes tener el id , y utilizarlo para lo que quieras


dejo un ejemplo echo deprisa y corriendo en eclipse :

Main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package ejemplo;
 
import javax.swing.JFrame;
 
public class Main {
 
public static void main(String[] args) {
JFrame mimarco=new Marco();
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mimarco.setVisible(true);
 
}
 
}

Marco

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package ejemplo;
 
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
 
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
 
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
public class Marco extends JFrame{
 
private static final long serialVersionUID = 1L;
private JComboBox<String> combo;
private JButton btn ;
private JLabel label;
private JPanel lamina;
private List<Integer> listaId ;
public Marco() {
setTitle("ComboBox");
setBounds(200,200, 400, 400);
btn=new JButton("Seleciona");
combo=new JComboBox<String>();
label=new JLabel("Prueba");
listaId =new ArrayList<Integer>();
lamina=new JPanel(new GridLayout(1,2));
setLayout(new BorderLayout());
try {
Connection conexion =DriverManager.getConnection("jdbc:mysql://localhost:3306/tubd", "root", " ");-> segun tu bd
Statement st =conexion.createStatement();
ResultSet rs=st.executeQuery("SELECT * FROM tutabla");
while(rs.next()){
combo.addItem(rs.getString("nombre"));->un campo a mostrar en el combo
listaId.add(rs.getInt("id"));->añado el id a una lista auxiliar
}
 
 
 
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 
 
btn.addActionListener(new ActionListener() {
 
@Override
public void actionPerformed(ActionEvent e) {
 
int indice = combo.getSelectedIndex();->cuando pulse el boton el indice del combo coincidira con el indice de la array list auxiliar
String dato =(String) combo.getSelectedItem();
String texto =dato+" psosicion "+indice+" id de la lista "+listaId.get(indice);
System.out.println(dato+" posicion "+indice+" id de la lista "+listaId.get(indice));
label.setText(texto);
}
});
lamina.add(combo);
lamina.add(btn);
add(label,BorderLayout.CENTER);
add(lamina,BorderLayout.NORTH);
 
 
 
}
 
}

Perdon si la distribucion de los componentes no es la mejor , pero fue deprisa y corriendo
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