[Gvsig_desarrolladores] Lectura de tablas DBF

Kiko Alario francisco.alario en iver.es
Lun Dic 3 18:01:21 CET 2007


Hola Arancha,

a ver, el problema creo que está en que compruebas en el sitio 
equivocado si la tabla que estas consultando se llama daños.dbf. Haces 
esta comprobación al entrar dentro del tercer bucle for y deberías 
hacerla justo después de obtener el nombre de la tabla, incluyendo 
dentro del if los siguientes bucles for. Ya que conforme lo tienes ahora 
lo que haces es recorrer todas las tablas que tienes en el proyecto, 
para cada tabla recorres todas las filas, y para cada fila obtienes los 
campos, y si la tabla se llama "daños.dbf" obtienes los valores 
variedad, alto, medio y bajo. Después al final del segundo bucle for 
añades los valores anteriores a sus respectivos combos e incrementas el 
contador. Pero estas dos operaciones las realizas fuera del if que 
comprueba si estás en la tabla que deseas, es decir daños.dbf, por lo 
que el contador almacena la suma de todas las filas que hay en las 
tablas del proyecto.

Resumiendo, quita el if que comprueba el nombre de la tabla con 
"daños.dbf" y ponlo justo después de obtener el nombre de la tabla; y 
cierralo justo después de cerrar el segundo bucle for.

Un saludo.

RINCON OLIVA, Mª ARANZAZU escribió:
> 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
>
>
> ------------------------------------------------------------------------
>
> 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){ }	
> 		
> 		
> 	
> 	   
>
> 		
> }
> ------------------------------------------------------------------------
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>   


-- 
=============
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.



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