Java - evitar superposicion de turnos

 
Vista:
Imágen de perfil de Francisco
Val: 85
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

evitar superposicion de turnos

Publicado por Francisco (56 intervenciones) el 18/10/2018 22:40:56
Hola, mi codigo es este.

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
String sql = "INSERT INTO `turnos`(`codigo`, `dni`, `matricula`, `motivo`, `fecha_hora`) VALUES(?,?,?,?,?)";
 
String sqlConsulta = "SELECT * FROM turnos";
 
JComboBoxMatricula cargarMatriculas= new JComboBoxMatricula();
JComboBoxDni cargarDocumentos = new JComboBoxDni();
 
try {
    SimpleDateFormat formatterDB = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    jComboBoxDni = cargarDocumentos.consultarDocumentos(jComboBoxDni);
    jComboBoxMatricula = cargarMatriculas.consultarMatriculas(jComboBoxMatricula);
    String valueDni = jComboBoxDni.getSelectedItem().toString();
    String valueMatricula = jComboBoxMatricula.getSelectedItem().toString();
    java.sql.Timestamp fechaHora = new java.sql.Timestamp(formatterDB.parse(jTxtFechaHora.getText()).getTime());
 
    Statement st = conn.createStatement();
 
    ResultSet rs = st.executeQuery(sqlConsulta);
 
    PreparedStatement ps = conn.prepareStatement(sql);
 
    Integer valueCodigo = Integer.parseInt(jTxtCodigo.getText());
 
    ps.setInt(1, Integer.parseInt(jTxtCodigo.getText()));
    ps.setInt(2,Integer.parseInt(valueDni));
    ps.setInt(3,Integer.parseInt(valueMatricula));
    ps.setString(4, jTxtMotivo.getText());
    ps.setTimestamp(5, fechaHora);
 
    List<Integer> matriculas = new ArrayList<Integer>();
    List<java.sql.Timestamp>fechasHora = new ArrayList<java.sql.Timestamp>();
 
    while(rs.next()){
 
        for(Integer m:matriculas){
            matriculas.add(rs.getInt("matricula"));
        }
        for(java.sql.Timestamp k:fechasHora){
            fechasHora.add(rs.getTimestamp("fecha_hora"));
        }
 
    }
 
    for(Integer m:matriculas){
        for(java.sql.Timestamp k:fechasHora){
 
            if(valueMatricula.equals(m) && fechasHora.equals(k)){
 
                javax.swing.JOptionPane.showMessageDialog(null, "hay superposicion de turnos");
                break;
 
            }else{
                ps.executeUpdate();
            }
        }
 
    }
 
    mostrarDatos();
 
} catch (SQLException ex) {
    Logger.getLogger(AbmTurno.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
    Logger.getLogger(AbmTurno.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParseException ex) {
    Logger.getLogger(AbmTurno.class.getName()).log(Level.SEVERE, null, ex);
}

Lo ejecuto pero no me agrega nada a la base de datos. Yo quiero que cuando ingrese datos, por ejemplo si lo que tipeo en la caja de texto es igual al valor del registro de la tabla en la base de datos se me abra un JOption Pane que me diga que hay superposicion de turnos, de lo contrario, que se ejecute el insert.

¿Esto es posible a nivel de programación?, ¿Comparar lo que estoy tipeando con los resultset de la tabla turnos?

Traté de hacerlo así pero no se me ejecuta el insert. ¿Cómo puedo lograr lo que quiero?

Muchas Gracias
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
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

evitar superposicion de turnos

Publicado por Yamil Bracho (2315 intervenciones) el 18/10/2018 23:07:28
Divide el problema spor partes. Primero hazte la parte que se trae los datos y ves si esta llegando lo que necesitas y en la segunda parte recorres las lista y haces la actualizacion
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
JComboBoxMatricula cargarMatriculas= new JComboBoxMatricula();
JComboBoxDni cargarDocumentos = new JComboBoxDni();
 
try {
	List<Integer> matriculas = new ArrayList<Integer>();
	List<java.sql.Timestamp>fechasHora = new ArrayList<java.sql.Timestamp>();
 
	String sqlConsulta = "SELECT * FROM turnos";
	Statement st = conn.createStatement();
	ResultSet rs = st.executeQuery(sqlConsulta);
 
	while(rs.next()){
		for(Integer m:matriculas){
			matriculas.add(rs.getInt("matricula"));
		}
 
		for(java.sql.Timestamp k:fechasHora){
			fechasHora.add(rs.getTimestamp("fecha_hora"));
		}
	}
 
	rs.close(); rs = null;
	st.close(); st = null;
 
	SimpleDateFormat formatterDB = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	jComboBoxDni = cargarDocumentos.consultarDocumentos(jComboBoxDni);
	jComboBoxMatricula = cargarMatriculas.consultarMatriculas(jComboBoxMatricula);
	String valueDni = jComboBoxDni.getSelectedItem().toString();
	String valueMatricula = jComboBoxMatricula.getSelectedItem().toString();
	java.sql.Timestamp fechaHora = new java.sql.Timestamp(formatterDB.parse(jTxtFechaHora.getText()).getTime());
 
	String sql = "INSERT INTO `turnos`(`codigo`, `dni`, `matricula`, `motivo`, `fecha_hora`) VALUES(?,?,?,?,?)";
	PreparedStatement ps = conn.prepareStatement(sql);
 
	Integer valueCodigo = Integer.parseInt(jTxtCodigo.getText());
 
	ps.setInt(1, valueCodigo );
	ps.setInt(2,Integer.parseInt(valueDni));
	ps.setInt(3,Integer.parseInt(valueMatricula));
	ps.setString(4, jTxtMotivo.getText());
	ps.setTimestamp(5, fechaHora);
 
	for(Integer m:matriculas){
		for(java.sql.Timestamp k:fechasHora){
			if (valueMatricula.equals(m) && fechasHora.equals(k)){
				javax.swing.JOptionPane.showMessageDialog(null, "hay superposicion de turnos");
				break;
			} else {
				ps.executeUpdate();
			}
		}
	}
 
	ps.close(); ps = null;
 
	mostrarDatos();
 
} catch (SQLException ex) {
	Logger.getLogger(AbmTurno.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
	Logger.getLogger(AbmTurno.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParseException ex) {
	Logger.getLogger(AbmTurno.class.getName()).log(Level.SEVERE, null, ex);
}
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 Francisco
Val: 85
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

evitar superposicion de turnos

Publicado por Francisco (56 intervenciones) el 18/10/2018 23:15:38
Gracias Yamil. Voy a probar si funciona. Estoy seguro que si.
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 Francisco
Val: 85
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

evitar superposicion de turnos

Publicado por Francisco (56 intervenciones) el 19/10/2018 06:22:35
Lo compilé pero no ejecutó el insert con el código que me pasaste. Creo que no sirvió pasar los resultset a objeto y eso ir agregándolo a un List.

Podemos buscar otra manera.

Cuando ingresé el medico y la fecha hora iguales a los valores de los registros de la base de datos el insert no se ejecuto ni tampoco se abrió el JOptionPane.
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