[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