[Gvsig_desarrolladores] Lectura de tablas DBF

RINCON OLIVA, Mª ARANZAZU maro1 en alu.um.es
Lun Dic 3 14:23:55 CET 2007


Hola,
Te adjunto un fichero con el procedimiento de leer tablas.
La tabla que cargo es daños.DBF que solamente contiene 4 filas.
Al leer la tabla, cargo uno de los campos de una fila  en un JCombobox  
y cuando desplego el jcombobox, el último campo me sale repetido  
muchas veces.

Muchas gracias por su ayuda.
Un saludo
Arancha.











Kiko Alario <francisco.alario en iver.es> escribi�

> RINCON OLIVA, Mª ARANZAZU escribió:
>> Hola buenos días,
>> Tengo problemas al leer tablas en formato DBF.
>> Tengo una tabla que contiene solamente 4 filas, pero al leeerla
>> me lee 22998 filas y me repite la ultima fila.
>>
>> Es normal??
>>
>>
>> Un saludo
>> ARancha
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en runas.cap.gva.es
>> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>>
>>
> Hola Arancha,
>
> mándanos un poco más de información sobre como accedes al fichero y   
> veremos porque te devuelve más filas de las esperadas.
>
> Como información adicional puedo decirte que en los archivos DBF se   
> almacena el número de filas en los bytes del 4 al 7 (con formato de   
> 32 bits y el byte menos significativo primero) por lo que puede que   
> en este espacio se esté almacenado el número 22998 y por eso se   
> devuelven tantas filas. Puedes comprobar el contenido del fichero   
> usando algún visor de ficheros en hexadecimal (yo uso KHexEdit para   
> Kubuntu) y ver que hay en esos 4 bytes.
>
> Un saludo y gracias por utilizar gvSIG
>
> -- 
> =============
> Francisco Alario Salom (Kiko)
> Equipo de gvSIG
>
> IVER T.I. S.A.
> C/ Salamanca, 50-52
> 46005-Valencia
> Tlf.+34963163400
> Spain
> www.iver.es
> www.gvsig.com
>
>
> Este mensaje y sus archivos son confidenciales. No está permitida su  
>  reproducción o distribución sin la autorización expresa de "IVER   
> Tecnologías de la Información". Si usted no es el destinatario   
> previsto, queda desautorizado cualquier uso, acceso o copia de este   
> mensaje. Si ha recibido este mensaje por error, por favor bórrelo e   
> infórmenos por esta misma vía.
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores


------------ próxima parte ------------
public void obtenerda?os(String variedad){
	int contadorfilas=0;
//Obtenemos los % de da?os de una variedad en concreto.
	String cvariedad="";
	String alto="";
	String medio="";
	String bajo="";
	
	 comboalto.removeAllItems();
	 combomedio.removeAllItems();
	 combobajo.removeAllItems();
	
	 
	try{
		//Llenamos el combobox con los da?os  del cultivo seleccionado
		 ProjectExtension ext = (ProjectExtension) 
		 PluginServices.getExtension(ProjectExtension.class);
		 ArrayList tables = ext.getProject().getDocumentsByType(ProjectTableFactory.registerName);
		 for (int i=0 ; i<tables.size() ; i++){
		          ProjectTable pt = (ProjectTable)tables.get(i);
		       
		          String nombretabla = pt.getName();
		          //obtenemos el recordset de la tabla
		           SelectableDataSource sds = pt.getModelo().getRecordset();
		           //LEEMOS LAS FILAS DE UNA TABLA
		           for (int j=0; j<sds.getRowCount(); j++){
		        	   //LEEMOS LOS CAMPOS DE UNA FILA DE UNA TABLA
		        	    
		                for (int k=0; k<sds.getFieldCount(); k++){
		                	
			        		
			        		
		                	   // leemos los campos de una fila de la tabla
		                	 
	                             if (nombretabla.equals("da?os.DBF")){
	                            	 
	                            	
	                               //Leemos los campos solo de una fila
	                            	  String nombre =sds.getFieldName(k);
			                	        if (nombre.equals("VARIEDAD")){
			                	        	
			                	        	  cvariedad= sds.getFieldValue(j, k).toString();
			                	        	  
			                	        	 
			                	        		
			                	        }
			                	    
			                	        
			                	        if (nombre.equals("ALTO")){
			                	        	alto =sds.getFieldValue(j, k).toString();
			                	        	
			                	        	
			                	        }  
			                	        
			                	        
			                	        if (nombre.equals("MEDIO")){
			                	        	medio =sds.getFieldValue(j, k).toString();
			                	        	
			                	        	
			                	        }
			                	        
			                	        if (nombre.equals("BAJO")){
			                	        	bajo =sds.getFieldValue(j, k).toString();
			                	        	
			                	        	
			                	        }
			                	        
			                	        
			                	        
	                             }//END Nombre de tabla es GRUPOS.DBF
		           
		                   } //end de los campos de una fila
		                
		                //COMPARAMOS CON LOS PAR?METROS
		     	 
		                
		              
		              if (cvariedad.equals(variedad)){
		            	  
		            	  
//		            	
		            	  
		            	  //llenamos los combobox
		            	  comboalto.addItem(alto);
		            	  combomedio.addItem(medio);
		            	  combobajo.addItem(bajo);
		            	  
		              }
                	       //este contador de filas me indica el n?mero de fila que he leido de la tabla
	                   
		              ++contadorfilas;
		                  
		                   
		           }//end de las filas de una tabla	 
		                     
		           
		           
		           
		 
		 } //end-for tablas del proyecto      
		               
		}//END TRY
		
		
		catch(Exception ext){ }	
		
		
	
	   

		
}


Más información sobre la lista de distribución gvSIG_desarrolladores