Hola. Añadir una fila a un DBF implica tamién modificar la cabecera del archivo DBF (no es solamente añadir cosas al final), así que no creo que sea fácil añadir una línea a un DBF en una PDA sin reescribir todo el archivo.
Si has de manejar en la PDA archivos DBF que no son muy pequeños, lo lógico sería: - Cargar el DBF en memoria (eso ya lo estás haciendo) - Modificar (en memoria) el DBF varias veces durante la sesión de trabajo - Una vez terminado el trabajo, almacenar en disco el DBF, escribiéndolo completamente ¿Esto no es posible en tu caso? ¿De qué tamaño es tu DBF? ¿Puedes explicar un poco como usas los DBF? (desde el punto de vista de un usuario) Saludos, Juan Lucas Domínguez Rubio --- Prodevelop SL, Valencia (España) Tlf.: 96.351.06.12 -- Fax: 96.351.09.68 http://www.prodevelop.es <http://www.prodevelop.es/> --- ________________________________ De: [email protected] en nombre de agirrearri Enviado el: mié 09/06/2010 12:01 Para: [email protected] Asunto: Re: [Gvsig_desarrolladores] como añadir una linea a un dbf que no es de un shape en mobile Yo solo quiero que meta la linea y no que lo escriba de nuevo. Y por lo que he entendido la forma en lo que me has dicho se escribe toda la tabla. Al ser una aplicacin de pda y eso afectara mucho segn vaya creciendo la tabla. Ahora tengo esto, lo cope de este foro a uno que tena el mismo problema. public void addFila(String idapoyo, String idInci, boolean cerradaCheck, String descVis, String fotoVisita, String fechaVisita) { // Funcin que aada una fila a una tabla. // ENTRADA: newRow => hashmap con los datos de la fila a insertar. // fName => ruta completa del dbf //tine un problema:tiene que reescribir toda la tabla y eso //supone un gasto de memoria y tiempo Object newLinea[] = new Object[9]; newLinea[0] = new Integer(0);//gid newLinea[1] = new Integer(0);//idcor newLinea[2] = new Double(idapoyo);//id newLinea[3] = new Double(idInci);//idinci newLinea[4] = fechaVisita;//fechacor if (cerradaCheck) {//corregida newLinea[5] = new Integer(0);//Integer.getInteger("0"); } else { newLinea[5] = new Integer(-1);//Integer.getInteger("-1"); } newLinea[6] = descVis;//correccion newLinea[7] = fotoVisita;//fotovisita if (cerradaCheck) {//corregida newLinea[8] = new Integer(0);//Integer.getInteger("0"); } else { newLinea[8] = new Integer(-1);//Integer.getInteger("-1"); } try { File f; f = new File(nombre_dbf); DbfMemoryDataSource drv; drv = new DbfMemoryDataSource(f); drv.start(); int numFilas = (int) drv.getRowCount(); int numCols = drv.getFieldCount(); DbaseFileHeaderNIO myHeader; myHeader = DbaseFileHeaderNIO.createDbaseHeader(drv); numFilas++; myHeader.setNumRecords(numFilas); OrderFileOutputStream outStream = new OrderFileOutputStream(f); DbaseFileWriterNIO dbfWrite = new DbaseFileWriterNIO(myHeader, outStream); FeatureTemp fea = new FeatureTemp(); fea.setFieldNames(drv.getFieldNames()); for (int j = 0; j < numFilas - 1; j++) { fea.setValues(drv.getRow(j)); Object[] record = fea.getValues(); dbfWrite.write(record); } Object[] record = new Object[numCols]; for (int k = 0; k < numCols; k++) { // record to string obj to string zan record[k] = ValueFactory.createValueByType(newLinea[k] .toString(), drv.getFieldType(k)); } dbfWrite.write(record); dbfWrite.close(); outStream.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } Hay posibilidad de aadir un registro sin tener que escribirlo de nuevo? pd. yo utilizo javaDBF en para leer unos dbf-s en gvsig mobile y funciona en pda. Gracias, atentamente Eaut. -- View this message in context: http://osgeo-org.1803224.n2.nabble.com/como-a-adir-una-linea-a-un-dbf-que-no-es-de-un-shape-en-mobile-tp5154700p5157624.html Sent from the gvSIG desarrolladores mailing list archive at Nabble.com. _______________________________________________ gvSIG_desarrolladores mailing list [email protected] http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________ gvSIG_desarrolladores mailing list [email protected] http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
