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

mostrar un select por partes

Estas en el tema de mostrar un select por partes en el foro de Java en Foros del Web. Buen dia una consulta, tengo un select que me muestra los datos completos de una persona: en el caso de setNombres me muestra: Maria Claudia ...
  #1 (permalink)  
Antiguo 09/04/2012, 08:19
 
Fecha de Ingreso: febrero-2012
Ubicación: Lima
Mensajes: 64
Antigüedad: 12 años, 2 meses
Puntos: 1
Exclamación mostrar un select por partes

Buen dia una consulta, tengo un select que me muestra los datos completos de una persona:
en el caso de setNombres me muestra:
Maria Claudia Perez Mendoza =setNombres

Código:
String sql="select nombres from tabla_datos where cdoc_id = ?";
				stmt = conn.prepareStatement(sql);
				stmt.setString(1, dni.trim() );
				lsDni=new ArrayList();
				rs = stmt.executeQuery();
				while(rs.next()){	
					item =new Bntcuentas();
					item.setNombres(rs.getString(1));
			        lsDni.add(item);
		            return  lsDni;
como podria hacer para separar por partes, para poder mostrar en una tabla:
1er Nombre: Maria
2do Nombre: Claudia
Apellido Paterno: Perez
Apellido Materno: Mendoza

Una ayuda porq aun no me sale.... gracias
  #2 (permalink)  
Antiguo 09/04/2012, 08:51
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: mostrar un select por partes

Si tienes nombre y apellidos en el mismo campo de la base de datos no hay forma humana ni divina de separar todo, sobre todo porque el número de nombres y apellidos es siempre variable.

En todo caso deberias tener 4 campos en la base de datos.
Nombre1
Nombre2
Apellido1
Apellido2
Recuperarlos por separado y luego en el objeto que maneje el registro, tener un método para reconstruir el nombre completo, o la forma "Apellidos, Nombres" que también suele usarse bastante.

Usualmente se usan 3 campos, 1 para el nombre (sea simple o compuesto) y otro para cada uno de los apellidos, siendo el segundo apellido opcional.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 09/04/2012, 09:00
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: mostrar un select por partes

En el caso de que supongas caso ideal que siempre vas a tener 2 nombres y dos apellidos podrias usar un StringTokenizer y recuperar los 4 tokens. También podrías controlar 1 nombre y 2 apellidos, pero nada de nombres y apellidos compuestos.... con lo que deberías repensarte lo que estás haciendo.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #4 (permalink)  
Antiguo 09/04/2012, 09:41
 
Fecha de Ingreso: febrero-2012
Ubicación: Lima
Mensajes: 64
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: mostrar un select por partes

Bueno en la tabla, lamentablemente tengo todos los datos nombres y apellidos en un mismo campo, es por eso que jalo todo junto nombres y apellidos... entonces no se podria separar????
con algun codigo de java??? :(
  #5 (permalink)  
Antiguo 09/04/2012, 09:48
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: mostrar un select por partes

Uno fácil:
if (lsDni != null & !lsDni.isEmpty()) {
String[] cadenas = lsDni.get(0).split(" ");
if(cadenas.length() == 3) {
String nombre1 = cadenas[0];
String apellido1 = cadenas[1];
String apellido2 = cadenas[2];
} else if (cadenas.length() == 4)) {
String nombre1 = cadenas[0];
String nombre2 = cadenas[1];
String apellido1 = cadenas[2];
String apellido2 = cadenas[3];
}
// Hacer lo que se quiera con estos datos
}

Lamentablemente esto no funcionaría para la Srita. "María de las Mercedes de las Cuevas del Monte" ni para otros casos similares, aunque para casos extremos se podría controlar que viniesen elementos como "de","del","la","los","las" e incluirlos como parte del siguiente elemento, aunque esto ya es para nota :D
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 09/04/2012, 11:07
 
Fecha de Ingreso: febrero-2012
Ubicación: Lima
Mensajes: 64
Antigüedad: 12 años, 2 meses
Puntos: 1
Exclamación Respuesta: mostrar un select por partes

Hola, gracias!! estoy siguiendo tu consejo.... pero que datos me retornaria:
Código:
public List  lsDatos(String idTabla, String dni) throws Exception{
		List lsDatos=null;
		PreparedStatement stmt = null;
		ResultSet rs = null;	
		Connection conn = null;
		try{	
				Conexionoracle cn  = new Conexionoracle();
				conn = cn.getConectionSRPMH();
				BnDatos item =new BnDatos();
		
				String sql="select acliente from tcuentas_ph1 where cdoc_id = ?";
				stmt = conn.prepareStatement(sql);
				stmt.setString(1, dni.trim() );
				lsDatos=new ArrayList();
				rs = stmt.executeQuery();
				while(rs.next()){	
					item =new BnDatos();
					item.setDatosPersonales(rs.getString(1));
				
				if (lsDatos != null & !lsDatos.isEmpty()) {
			
					String[] cadenas = ((String) lsDatos.get(0)).split(" ");
					if(cadenas.length == 3) {
					String nombre1 = cadenas[0];
					String apellido1 = cadenas[1];
						String apellido2 = cadenas[2];
					} else if (cadenas.length == 4) {
					String nombre2 = cadenas[1];
						String apellido1 = cadenas[2];
						String apellido2 = cadenas[3];
						}
					 
						}
                 	lsDatos.add(item);
				}			
			}catch(SQLException e){
				log3.error(e, "", e.getMessage());
				throw e;
		   }finally{			
				if(rs!=null){rs.close();rs= null;};
				if(stmt !=null){stmt.close();stmt = null;};	
				if(conn !=null){conn.close();conn = null;};
		}
		  
		 return  lsDatos; 
	
	}
en mi clase controler yo llamo asi:

Código:
@RequestMapping(value = "datos", method = RequestMethod.POST)
	public void datos(HttpServletRequest request) throws Exception {


		String idBuscar = request.getParameter("Op");
		String dni = "";
		
		try {
	
			List resultDatos = null;
			dni = Funciones.izquierda(request.getParameter("Op"), "0", 10);
		    resultDatos = tablaDao.lsDatos(idBuscar, dni.trim());
	    	request.setAttribute("resultDatos", resultDatos);
		    
		} catch (Exception e1) {
			request.setAttribute(Constante.CONTROLLER_MENSAJE_OPERACION_COD_ALERTA,Constante.gBN_DB_SRPMH_ORACLE + ": "+ e1.getMessage());
			log3.error(e1, "", e1.getMessage());
		}
}
Y en mi jsp solo mostraria
Código:
   <c:forEach var="resultPrestamos" items="${resultPrestamos}">
	
                <tr>
                   <td aling = "right" width="200"> 1 Nombre:</td>
                   <td width="679"><c:out value="${resultDatos.nombre1}" /></td>
                </tr>
                <tr>
                   <td aling = "right" width="200"> 2 Nombre:</td>
                   <td width="679"><c:out value="${resultDatos.nombre2}" /></td>
                </tr>
                <tr>
                   <td aling = "right" width="200"> Ape Paterno:</td>
                   <td width="679"><c:out value="${resultDatos.paterno}" /></td>
                </tr>
                <tr>
                   <td aling = "right" width="200"> Ape Materno:</td>
                   <td width="679"><c:out value="${resultDatos.materno}" /></td>
                </tr>
              
     </c:forEach>
pero como jalaria cada cato por separado :)

Etiquetas: partes, select, string
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 19:33.