Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda, estructura repetitiva y grillas

Estas en el tema de Ayuda, estructura repetitiva y grillas en el foro de Java en Foros del Web. buen dia gente, la cuestion es la siguiente, tengo un arreglo que me debe calcular los siguientes fechas de vencimientos de cuotas, el dia es ...
  #1 (permalink)  
Antiguo 23/01/2011, 05:26
 
Fecha de Ingreso: enero-2011
Mensajes: 21
Antigüedad: 13 años, 10 meses
Puntos: 0
Ayuda, estructura repetitiva y grillas

buen dia gente, la cuestion es la siguiente, tengo un arreglo que me debe calcular los siguientes fechas de vencimientos de cuotas, el dia es estatico (10 de cada mes), solo debe sumar los meses o sumar el año y restar los meses, en caso de ser mes 12, adhiero parte del codigo:

Procedimiento que calcula la nueva fecha:

Cita:
private String vence (String ydia,String ymes, String yannio){

int xmes = Integer.parseInt(ymes);
int xannio = Integer.parseInt(yannio);
int xdia = Integer.parseInt(ydia);
if (xmes == 12){
xmes = xmes + 1;
}
else if (xmes > 12){
xmes = xmes - 12;
xannio = xannio + 1;
}
ydia = Integer.toString(xdia);
ymes = Integer.toString(xmes);
yannio = Integer.toString(xannio);
vencimiento = (yannio + "-" + ymes +"-" + ydia);
System.out.println("llega");
return vencimiento;
}
Procedimiento que carga grilla y ejecuta la estructura repetitiva:

Cita:
private void cargagrilla(){
String fecha1,xcuota;
Calendar c = new GregorianCalendar();
int ycuota = 1;
xcuota = Integer.toString(ycuota);
ydia = "10";
ymes = Integer.toString(c.get(Calendar.MONTH)+1);
yannio = Integer.toString(c.get(Calendar.YEAR));
fecha1 = (yannio + "-" + ymes +"-" + ydia);
System.out.println (fecha1);

for (int i = 0; i<12 ; i++){
vence (ydia,ymes,yannio);
try{
javax.swing.table.DefaultTableModel dt;
dt = (javax.swing.table.DefaultTableModel)grilla.getMod el();

String datos[] = new String[] {xcuota,txtmontocuota.getText(),vencimiento};
dt.addRow(datos);
ycuota = ycuota + 1;

}catch(Exception e){
javax.swing.JDialog.setDefaultLookAndFeelDecorated (true);
javax.swing.JOptionPane.showMessageDialog(this,e.g etMessage(),
"oima",javax.swing.JOptionPane.INFORMATION_MESSAGE );}
}
}
Agrego tambien el lugar donde declaro las variables:

Cita:
String ymes,yannio,ydia;
String vencimiento;
Y COMO RESULTADO OBTENGO ESTO:

[URL="http://www.subirimagen.org/host1/images/950GRILLA.jpg"]http://www.subirimagen.org/host1/images/950GRILLA.jpg[/URL]

Simpre carga lo mismo, puede que los parametros del "for" esten mal ya que solo trataba de hacer una prueba preliminar, si pueden echarme una manito, me seria de gran ayuda. gracias
  #2 (permalink)  
Antiguo 23/01/2011, 11:43
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: Ayuda, estructura repetitiva y grillas

Hola, me parece que tu problema está aquí
if (xmes == 12){
xmes = xmes + 1;
}
else if (xmes > 12){
xmes = xmes - 12;
xannio = xannio + 1;
}

nunca va a sumar un mes más, ya que tienes xmes==12

saludos
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 23/01/2011, 12:33
 
Fecha de Ingreso: enero-2011
Mensajes: 21
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda, estructura repetitiva y grillas

entiendo, pero que tiene que tener en ese lugar? no entiendo..si puedes resolverme la incognita por favor..saludos y gracias por la respuesta
  #4 (permalink)  
Antiguo 23/01/2011, 13:15
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: Ayuda, estructura repetitiva y grillas

Bueno, lo que te está pasando es que nunca sumas un mes, ya que pones
xmes==12
Si tus meses comienzan en 1 entonces
deberías poner

if(xmes < 12){
xmes+=1;
}else{
xmes=1;
xanio+=1;
}

y listo
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #5 (permalink)  
Antiguo 23/01/2011, 19:42
 
Fecha de Ingreso: enero-2011
Mensajes: 21
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda, estructura repetitiva y grillas

Cita:
Iniciado por pablor21 Ver Mensaje
Bueno, lo que te está pasando es que nunca sumas un mes, ya que pones
xmes==12
Si tus meses comienzan en 1 entonces
deberías poner

if(xmes < 12){
xmes+=1;
}else{
xmes=1;
xanio+=1;
}

y listo
Mil gracias por tus respuestas, de verdad has sido de mucha ayuda, te presento como lo tengo ahora...

Procedimiento que calcula las fechas y carga grillas (si si logre hacerlo todo dentro del mismo procedimiento y olvidarme de los parametros y retornos :P)


Cita:
private void cargagrilla(){
String fecha1,xcuota;
Calendar c = new GregorianCalendar();
int xauxcuota = Integer.parseInt(auxcuota);
System.out.println (xauxcuota);
int ycuota = 1;
ydia = "10";
ymes = Integer.toString(c.get(Calendar.MONTH));
yannio = Integer.toString(c.get(Calendar.YEAR));
fecha1 = (yannio + "-" + ymes +"-" + ydia);
System.out.println (fecha1);

for (int i = 0; i<xauxcuota ; i++){
int xmes = Integer.parseInt(ymes);
int xannio = Integer.parseInt(yannio);
int xdia = Integer.parseInt(ydia);
if (xmes < 12){
xmes = xmes + 1;
}
else if (xmes >= 12){
xmes = 1;
xannio = xannio + 1;
}
ydia = Integer.toString(xdia);
ymes = Integer.toString(xmes);
yannio = Integer.toString(xannio);
try{
vencimiento = (yannio + "-" + ymes +"-" + ydia);
xcuota = Integer.toString(ycuota);
javax.swing.table.DefaultTableModel dt;
dt = (javax.swing.table.DefaultTableModel)grilla.getMod el();

String datos[] = new String[] {xcuota,txtmontocuota.getText(),vencimiento};
dt.addRow(datos);
ycuota = ycuota + 1;

}catch(Exception e){
javax.swing.JDialog.setDefaultLookAndFeelDecorated (true);
javax.swing.JOptionPane.showMessageDialog(this,e.g etMessage(),
"oima",javax.swing.JOptionPane.INFORMATION_MESSAGE );}
}
}
funciona de 10...de aqui saco el valor de "i" que esta dentro de una lista desplegable...


Cita:
private void cbo_cuotaKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==123)
{ // presiona F12
auxcuota = (String) cbo_cuota.getSelectedItem();
cargagrilla();
}
}
Ahora la cuestion es que dependiendo de esa lista, los posibles valores para i son: 12/24/48, de forma que si es 12 carga 12 registros en la grilla y asi sucesivamente.., la cuestion es que solo carga 14, (o.0) no se porque , adhiero, donde defino mi grilla:

Cita:
public GenerandoContrato() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
try
{
initComponents();
new testconexion();
jScrollPane2.setViewportView(grilla);
String campos[]=new String[]{"Nro Cuota","Monto $","Vencimiento"};
javax.swing.table.DefaultTableModel dtm= new javax.swing.table.DefaultTableModel(null,campos);
grilla.setModel(dtm);
hab_botones();
des_campos();
limpiar_campos();
cargacliente();
cargaplan();
cargacuota();
}
catch(Exception ex)
{
Logger.getLogger(GenerandoContrato.class.getName() ).log(Level.SEVERE,null,ex);
dispose();
}
}
creo que es algo con las propiedades de la grilla en si, pero no encontre nada relacionado en la web...saludos y repito las gracias hacia ti..buenas noches
  #6 (permalink)  
Antiguo 23/01/2011, 20:03
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: Ayuda, estructura repetitiva y grillas

Hola, primera cosa, que no tiene nada que ver, pero igual te lo digo, por qué evalúas dos veces xmes si no es necesario? o sea, tú haces:
if (xmes < 12){
xmes = xmes + 1;
}
else if (xmes >= 12){
xmes = 1;
xannio = xannio + 1;
}

por qué no?

if (xmes < 12){
xmes = xmes + 1;
}
else{
xmes = 1;
xannio = xannio + 1;
}


en este caso creo que deberías cambiar la condición
en vez de preguntar por xmes < 12 deberías preguntar primero si xmes%12 == 0, esto te permitirá hacer lo siguiente

if(xmes%12==0){
xmes=1;
xanio+=1;
}else{
xmes +=1;
}

cuéntame si eso soluciona tu problema
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy

Etiquetas: carga, estructura, grilla, repetitiva
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:44.