Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/09/2013, 19:52
bibliotecario08
 
Fecha de Ingreso: agosto-2013
Ubicación: d.f.
Mensajes: 38
Antigüedad: 11 años, 5 meses
Puntos: 0
Información Respuesta: problema con funcion error java.lang.NullPointeException

jajajaj error mio jejeje eso me pasa por estar de desesperado y programando a la vez jeej bueno en la parte que me mencionas pctoHoraEntrada esa no es asi que la cambie por la de pctoCalcularHoras jejej al correrlo efectivamente si me da el resultado asi queda el codigo:

Código Java:
Ver original
  1. //funcion que realiza el calculo de horas en base al id del prestador,
  2.        //la fecha de inicion y la fecha de termino
  3.        public String CalcularHoras(String id_prestador, String fecha_inicio, String fecha_termino){
  4.        
  5.           //establece conexion con la base de datos  
  6.           conecta=ConectarBD_asistencia_servicio();  
  7.      
  8.           //guarda el total de horas calculadas por el procedimiento almacenado
  9.           String total_horas="";
  10.        
  11.           try{
  12.              //prepara al procedimiento almacenado y pasa los parametros de la
  13.              //funcion para buscar los datos
  14.              pctoCalcularHoras=conecta.prepareCall("{call calcular_horas(?,?,?)}");
  15.              pctoCalcularHoras.setString(1,id_prestador);
  16.              pctoCalcularHoras.setDate(2,Date.valueOf(fecha_inicio));
  17.              pctoCalcularHoras.setDate(3,Date.valueOf(fecha_termino));
  18.              
  19.              SimpleDateFormat formato_hora=new SimpleDateFormat("HH:mm:ss");
  20.              
  21.              //ejecuta el procedimiento almacenado y recorre los registros
  22.              //de la tabla en busca de los datos
  23.              [COLOR="Red"]resultado=pctoCalcularHoras.executeQuery(); [/COLOR]
  24.              
  25.              while(resultado.next()){
  26.                 Date horas_calculadas=resultado.getDate(1);
  27.                 //evita que el dato obtenido no sea null si no lo es procede a realizar
  28.                 //la busqueda de la fecha y conversion a String en caso contrario
  29.                 //sigue el codigo su flujo normal y retorna la variable fechainicio
  30.                 //la cual esta debidamente inicializada
  31.                 //NOTA: esto se realizo asi para evitar el error java.lang.NullPointerException
  32.                 if(horas_calculadas!=null){
  33.                    total_horas=total_horas+formato_hora.format(horas_calculadas);
  34.                 }//termina if
  35.                
  36.              }//termina while
  37.              //retorna la funcion los datos encontrados por el procedimiento almacenado
  38.              return total_horas;
  39.              
  40.           }//termina try
  41.           catch(Exception e){
  42.              //en caso de existir algun impedimento se despliega un mensaje
  43.              //indicando el error
  44.              JOptionPane.showMessageDialog(null,e,"Advertencia",JOptionPane.WARNING_MESSAGE);
  45.              return null;
  46.           }//termina catch
  47.            
  48.        }//termina funcion CalcularHoras

la parte en rojo es la que ya esta corregida como digo si me da el resultado pero me lo da mal es decir las pruebas que yo hice con el procedimiento alamcenado no coinsiden con lo que em arroja en la funcion, esto se debe pienso yo al formato que se le da (ya sea de 12 0 24 horas) por el SimpleDateFormat asi que despues se me ocurrio modificar el procedimiento para que hiciera un cast para convertir de interval a varchar, al realizar pruebas efectivamente me da el resultado solo que en formato varchar entonses se modifica la funcion del aplicativo java, borrando algunas lineas y queda la funcion de la siguiente manera:

Código Java:
Ver original
  1. //funcion que realiza el calculo de horas en base al id del prestador,
  2.    //la fecha de inicio y la fecha de termino
  3.    public String CalcularHoras(String id_prestador, String fecha_inicio, String fecha_termino){
  4.    
  5.       //establece conexion con la base de datos  
  6.       conecta=ConectarBD_asistencia_servicio();  
  7.  
  8.       //guarda el total de horas calculadas por el procedimiento almacenado
  9.       String total_horas="";
  10.    
  11.       try{
  12.          //prepara al procedimiento almacenado y pasa los parametros de la
  13.          //funcion para buscar los datos
  14.          pctoCalcularHoras=conecta.prepareCall("{call calcular_horas(?,?,?)}");
  15.          pctoCalcularHoras.setString(1,id_prestador);
  16.          pctoCalcularHoras.setDate(2,Date.valueOf(fecha_inicio));
  17.          pctoCalcularHoras.setDate(3,Date.valueOf(fecha_termino));
  18.            
  19.          //ejecuta el procedimiento almacenado y recorre los registros
  20.          //de la tabla en busca de los datos
  21.          resultado=pctoCalcularHoras.executeQuery();
  22.          
  23.          while(resultado.next()){
  24.             total_horas=total_horas+resultado.getString(1);
  25.             //evita que el dato obtenido no sea null en caso de que no se encuentre
  26.             //de acuerdo a los parametros pasados en el procedimiento almacenado
  27.             if(total_horas.equals("null")){
  28.                total_horas="";
  29.             }//termina if
  30.            
  31.          }//termina while
  32.          //retorna la funcion los datos encontrados por el procedimiento almacenado
  33.          return total_horas;
  34.          
  35.       }//termina try
  36.       catch(Exception e){
  37.          //en caso de existir algun impedimento se despliega un mensaje
  38.          //indicando el error
  39.          JOptionPane.showMessageDialog(null,e,"Advertencia",JOptionPane.WARNING_MESSAGE);
  40.          return null;
  41.       }//termina catch
  42.        
  43.    }//termina funcion CalcularHoras

jejejej ya con esto ya puedo entregar mi aplicativo, gracias de todas formas por la ayuda brindada.
__________________
"benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y totalmente diferente..."