Java - Problemas al rescatar fechas de una Jtable

 
Vista:
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 01/05/2020 23:20:19
Hola amigos del foro esperando que todos se encuentren muy bien de salud, he aquí nuevamente molestando, tengo un problema y he buscado alguna solución pero no he encontrado nada y he tratado de solucionarlo pero no he podido.
Mi problema consiste en que tengo dos columnas en las cuales almaceno fechas, una es fecha designación y la otra informe, en la cual se muestra según archivo adjunto, lo que pretendo hacer es por cada fila que reste fecha de informe - fecha designación y el resultado es decir los días, lo arroje a la ultima columna que se ve en el archivo adjunto, pero no puedo ya que me manda un error al convertir las fechas de string en date, por mientas les muestro lo que tengo hecho hasta la fecha, el el primer do whule funciona bien, en el segundo do while es del problema
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
private void sumacolumnaActionPerformed(java.awt.event.ActionEvent evt) {
    txtpromedio.setText("0");
    int ta = tblDatos.getRowCount();
    int c = 0;
    do {
        int f = c++;
        int n1 = Integer.parseInt(tblDatos.getValueAt(f, 19).toString());
        String nu = txtpromedio.getText();
        int nu2 = Integer.parseInt(nu);
        long re = n1 + nu2;
        long re1 = re / c;
        txtpromedio.setText(String.valueOf(re1));
        txtfilas.setText(String.valueOf(c));
    } while (c < ta);
 
    int ta1 = tblDatos.getRowCount();
    int c1 = 0;
    do {
        int f1 = c1++;
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        String A = String.valueOf(tblDatos.getValueAt(f1, 20).toString());
        String B = String.valueOf(tblDatos.getValueAt(f1, 18).toString());
 
    } while (c1 < ta1);
    sumacolumna.setEnabled(false);
}
ojala que me puedan ayudar y desde ya 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: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 05/05/2020 02:39:07
Hola amigos del foro esperando que todos se encuentren bien de salud en estos tiempos difíciles que llevamos, estoy cerca de ver ver el resultado final, pero hasta le momento hace todo bien, pero no me muestra el resultando en la columna que le indico que es la ultima, este es el código que tengo hasta la fecha.
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 void sumacolumnaActionPerformed(java.awt.event.ActionEvent evt) {
    txtpromedio.setText("0");
    int ta = tblDatos.getRowCount();
    int c = 0;
    do {
        int f = c++;
        int n1 = Integer.parseInt(tblDatos.getValueAt(f, 19).toString());
        String nu = txtpromedio.getText();
        int nu2 = Integer.parseInt(nu);
        long re = n1 + nu2;
        long re1 = re / c;
        txtpromedio.setText(String.valueOf(re1));
        txtfilas.setText(String.valueOf(c));
    } while (c < ta);
 
    txtpromedio1.setText("0");
    int ta1 = tblDatos.getRowCount();
    int c1 = 0;
    do {
        int f1 = c1++;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date A = sdf.parse (tblDatos.getValueAt(f1, 20).toString());
            Date B = sdf.parse(tblDatos.getValueAt(f1, 18).toString());
            int dias = (int) ((A.getTime() - B.getTime()) / 86400000);
            JTable tblDatos = new JTable();
            tblDatos.setValueAt(dias, c1, 22);
        } catch (Exception e) {
        }
    } while (c1 < ta1);
    sumacolumna.setEnabled(false);
}
es del segundo do while en donde tengo el problema ojala que me puedan ayudar, como llevo el resultado de la resta a la ultima columna para posteriormente realizar un promedio de las fechas, desde ya muchas gracias.
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 Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Billy Joel (876 intervenciones) el 05/05/2020 03:53:42
Buenas noches Hector, mira esto tal vez te pueda servir...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    try {
        Date a = sdf.parse("01/01/2020");
        Date b = sdf.parse("15/01/2020");
        System.out.println("dif: " + daysDiff(a, b));
    } catch (ParseException ex) {
        ex.printStackTrace(System.out);
    }
}
 
public static long daysDiff(Date a, Date b) {
    long diffInMillies = Math.abs(a.getTime() - b.getTime());
    long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
    return diff;
}

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

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 06/05/2020 02:58:05
Hola Billy esperando que se encuentren todos muy bien de salud, te cuento que me funciono bien la idea que me diste, ahora lo que me falta y que lo puse en el código no me agrega el valor de los resultados en la columna de fechas, por lo cual te adjunte unas imágenes en formato Word para que la veas y me entiendas, busque por ahí y casi todos utilizaban el mismo código que es este de posicionar datos en una columna especifica, la puse en negrita resaltada para que le a veas .

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
private void sumacolumnaActionPerformed(java.awt.event.ActionEvent evt) {
    txtpromedio.setText("0");
    int ta = tblDatos.getRowCount();
    int c = 0;
    do {
        int f = c++;
        int n1 = Integer.parseInt(tblDatos.getValueAt(f, 19).toString());
        String nu = txtpromedio.getText();
        int nu2 = Integer.parseInt(nu);
        long re = n1 + nu2;
        long re1 = re / c;
        txtpromedio.setText(String.valueOf(re1));
        txtfilas.setText(String.valueOf(c));
    } while (c < ta);
 
    txtpromedio1.setText("0");
    int ta1 = tblDatos.getRowCount();
    int c1 = 0;
    do {
        int f1 = c1++;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date A = sdf.parse(tblDatos.getValueAt(f1, 20).toString());
            Date B = sdf.parse(tblDatos.getValueAt(f1, 18).toString());
            System.out.println("dif: " + daysDiff(A, B));
            JTable tblDatos = new JTable();
            tblDatos.setValueAt(daysDiff(A, B), c1, 22);
        } catch (Exception e) {
 
        }
    } while (c1 < ta1);
    sumacolumna.setEnabled(false);
}
 
public static long daysDiff(Date a, Date b) {
    long diffInMillies = Math.abs(a.getTime() - b.getTime());
    long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
    return diff;
}

lo que esta marcado es lo que te digo que cada resultado por cada fila que se dirija a esa columna en particular, me ha costado este proceso pero se debe hacer para que realicen los reportes necesarios por meses y desde ya muchas gracias por tu ayuda.
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 Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Billy Joel (876 intervenciones) el 06/05/2020 12:58:58
En la línea
1
JTable tblDatos = new JTable();

Estas creando una nueva donde esa tabla solo le asignas algo

Y en el word no se entiende lo que quieres hacer
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
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 07/05/2020 02:14:54
Hola Billy buenas, te comento lo que quiero hacer es con la linea del
1
2
3
System.out.println("dif: " + daysDiff(A, B));
JTable tblDatos = new JTable();
tblDatos.setValueAt(daysDiff(A, B), c1, 22);
los resultados de la variable daysdiff que se muestren en la columna 22, titulada Fechas, y no es una nueva tabla, solo le agregue una columna más denominada como antes te mencionaba fechas, he tratado con varias códigos pero nada funciona, favor de ayudarme y desde ya muchas gracias.
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

Problemas al rescatar fechas de una Jtable

Publicado por Franklin (179 intervenciones) el 07/05/2020 14:10:48
lo que te comenta Billy es que estas creando una nueva tabla

System.out.println("dif: " + daysDiff(A, B));
JTable tblDatos = new JTable(); // <-------------------------------

por lo tanto cuando agregas el valor en la posición #22 la agregas a una tabla "nueva", si ya vienes trabajando con dicha tabla no hace falta crear una nueva,o si?
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
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 08/05/2020 02:06:02
Franklin buenas hice unos arreglos y la voy a travabar en la misma tabla, por lo que como debo hacerlo para que los resultados se dirijan a la columna 22, desde ya muchas gracias.
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Rodrigo (623 intervenciones) el 08/05/2020 11:28:28
Elimina completamente la linea que dice
1
JTable tblDatos = new JTable();

al removerla, cada vez que uses tblDatos, haras referencia a la tabla que ya tienes referenciada en esa variable.
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
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 12/05/2020 02:00:18
Franklin buenas esperando que te encuentres bien de salud, como te dije arregle las lineas y estoy trabajando en la misma tabla, pero al agregar los resultados a la columna 22 el primero que es 33 por ejemplo lo coloca en la segunda fila, este el código que utilizo, ya llevo varios días en esto, este fin de semana me hice un descanso de esto pero nada todavía siempre el mismo error.
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
private void sumacolumnaActionPerformed(java.awt.event.ActionEvent evt) {
    txtpromedio.setText("0");
    int ta = tblDatos.getRowCount();
    int c = 0;
    do {
        int f = c++;
        int n1 = Integer.parseInt(tblDatos.getValueAt(f, 19).toString());
        String nu = txtpromedio.getText();
        int nu2 = Integer.parseInt(nu);
        long re = n1 + nu2;
        long re1 = re / c;
        txtpromedio.setText(String.valueOf(re1));
        txtfilas.setText(String.valueOf(c));
    } while (c < ta);
 
    txtpromedio1.setText("0");
    int ta1 = tblDatos.getRowCount();
    int c1 = 0;
    do {
        int f1 = c1++;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date A = sdf.parse(tblDatos.getValueAt(f1, 20).toString());
            Date B = sdf.parse(tblDatos.getValueAt(f1, 18).toString());
            System.out.println("dif: " + daysDiff(A, B));
            tblDatos.setValueAt(daysDiff(A, B), c1, 23);
        } catch (Exception e) {
 
        }
    } while (c1 < ta1);
    sumacolumna.setEnabled(false);
}
 
public static long daysDiff(Date A, Date B) {
    long diffInMillies = Math.abs(A.getTime() - B.getTime());
    long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
    return diff;
}
hago la depuración y no hay caso siempre en la ultima fila no se en que esta fallando, lo reviso y nada de nada favor de ayudarme no se si soy yo el awueonado que no resulta. desde ya muchas gracias, además favor de ver el archivo en word que esta adjunto para que lo entiendas mejor
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

Problemas al rescatar fechas de una Jtable

Publicado por Franklin (179 intervenciones) el 12/05/2020 15:42:12
en si cual es tu problema?, porque lo que hace tu código es sacar la diferencia de días y meterlo en la columna 23, y según la foto está bien.
no entiendo a la perfeccion
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
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 14/05/2020 23:32:28
Frankin buenas disculpa por no haberte contestado antes, tuve que hacer tras cosas y ahora voy a retomar el tema, es lo siguiente al parecer no viste el system.print de la imagen los resultados 33 y 32, el 33 debe ir en la primera fila pero lo muestra en la segunda fila, ese es el problema que tengo que el primer resultado lo coloca en la segunda fila, lo de la columna esta bien posicionado, ojala que me puedas ayudar y desde ya muchas gracias.
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

Problemas al rescatar fechas de una Jtable

Publicado por Franklin (179 intervenciones) el 15/05/2020 19:03:48
ehmmm si no me equivoco el fallo viene aqui.

tu linea

452. int f1 = c1++;
...
...
459. tblaDatos.setValueAt(daysDiff(A,B),c1,23); // donde tu c1 es la fila y 23 la columna

pero cuando defines tu f1 = c++; estas incrementando c1 y cuando lo usas para agregar el valor pasa de 0 a 1

intenta -> int f1 = c1+1;
con esto no incrementas la variable c1.

me avisas :D
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
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 16/05/2020 03:08:01
Franklin buenas muchas gracias por la ayuda prestada, pero te comento hice el cambio que me sugeriste, pero te comento que se creo una iteracion infinita, y mostrando siempre el último valor, ya no se que hacer y es lo último que me esta faltando para empezar a crear os reportes, creo que me las gano, esto mismo hacia en asp.net y me funcionaba bien y en java pienso que debe ser lo mismo, yo voy a seguir intentantolo y si puedes seguir ayudando me te lo agradecería.
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

Problemas al rescatar fechas de una Jtable

Publicado por Franklin (179 intervenciones) el 16/05/2020 14:23:24
disculpa, no llegué a ver que el dowhile depende del c1, pero porque no

int f1= c1+1;

y al final, antes de llegar al while incrementas tu valor de c1++; para que no estes en un bucle infinito;


mi intención es: como agregas el valor de los dias de diferencia usando como referencia a c1, intenta no incrementarlo con c1++ antes de usarlo quizás por ello el valor se agrega en la fila1 y no en la fila0, y claro incrementa c1 antes de la evaluación del dowhile en la linea 462.


Quizás el error es otra cosa, pero no veo nada inusual a parte de ello.
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
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al rescatar fechas de una Jtable

Publicado por Hector (63 intervenciones) el 19/05/2020 02:33:46
Franklin buenas esperando que te encuentres muy bien de salud, estuve haciendo todo algoritmo, pseudolenguaje etc, y en todo me funciona bein, pero al llevarlo a java no hay caso siempre el primer resultado lo arroja en la segunda fila, y hacer que decremente en -1 el c1 para que vuelva a la primera fila y hay, pero siempre me daba una iteración no salia nunca, así que no se que mas que hacer.
Lo otro hice como me dijiste y lo mismo iteración y lo saque del do while, y me daba error no contaba las filas, pero si la columna para rescatar el dato
si como te digo si es una cosa u otra no se en que estoy fallando o lo estare planteando mal, ojala que me puedas echar otra manp y te vulevo a dejar el código para que lo veas nuevamente, a lo mejor dos ojos más ven mehor qu este par que esta muy cansado y desde ya muchas gracias.

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 void sumacolumnaActionPerformed(java.awt.event.ActionEvent evt) {
    txtpromedio.setText("0");
    int ta = tblDatos.getRowCount();
    int c = 0;
    do {
        int f = c++;
        int n1 = Integer.parseInt(tblDatos.getValueAt(f, 19).toString());
        String nu = txtpromedio.getText();
        int nu2 = Integer.parseInt(nu);
        long re = n1 + nu2;
        long re1 = re / c;
        txtpromedio.setText(String.valueOf(re1));
        txtfilas.setText(String.valueOf(c));
    } while (c < ta);
 
    txtpromedio1.setText("0");
    int ta1 = tblDatos.getRowCount();
    int c1 = 0;
    do {
        int f1 = c1++;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date A = sdf.parse(tblDatos.getValueAt(f1, 20).toString());
            Date B = sdf.parse(tblDatos.getValueAt(f1, 18).toString());
            System.out.println("dif: " + daysDiff(A, B));
            tblDatos.setValueAt(daysDiff(A, B), c1, 23);
        } catch (Exception e) {
 
        }
    } while (c1 < ta1);
    sumacolumna.setEnabled(false);
}
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