Page 1 of 2

Problema con los campos memo...

PostPosted: Tue Nov 28, 2006 4:22 pm
by Elias Torres
Hola a todos...

Alguien sabe porque al abrir una tabla que contenga un campo memo da un error que dice algo así como que la tabla está corrupta?? ¿Es que no se puede trabajar con campos memo? Lo digo porque si le quito este campo trabajo sin problemas...


Saludos y gracias..

Elías Torres.

PostPosted: Wed Nov 29, 2006 6:57 am
by Antonio Linares
Elías,

Estás accediendo y modificando esa base de datos desde otro programa en FoxPro, etc. ?

PostPosted: Wed Nov 29, 2006 9:19 am
by Elias Torres
Hola Antonio.

La tablas pertenecen a un programa hecho en Fox, pero las tengo en una ubicación distinta de su aplicación. El tema es que deben ser esas tablas las que debo usar con la pda... ¿Existe algún problema si las tablas son de otra aplicación?. Entiendo yo que al estar en otra ubicación la aplicación principal no realiza cambios sobre estas tablas....


Saludos...

Elías Torres.

PostPosted: Wed Nov 29, 2006 1:25 pm
by Antonio Linares
Elías,

Nosotros estamos usando ficheros FPT desde Harbour sin problemas.
Estás usando el build más reciente de Harbour para Pocket PC ?

De que fecha es harbour.exe ?

PostPosted: Fri Dec 01, 2006 12:07 pm
by Elias Torres
Hola Antonio...

Las tablas a las que accedo pertenecen a una aplicación que está corriendo por su cuenta. Yo simplemente pretendo acceder a ellas y luego descargarme solo los campos que necesito en la pda.

Esto que te comento lo estoy haciendo asi:

//abro la tabla de articulo para copiarme los campos que necesito en una
//tabla temporal (puesto que la de articulo está pillada por el otro
//programa) y luego descargarmela en la pda...y asi con las otras dos.

use(ruta_base+"articulo.dbf") new
COPY TO ruta_base+temp_art FIELDS codart,nomart,codbarart
INDEX ON codart TO (ruta_base +"temp_art.cdx")
COPY FILE (ruta_base + "temp_art.*") to (CURDIR()+"\articulo.*")

use(ruta_base+"precios.dbf") new
COPY TO ruta_base+temp_pre FIELDS articulo,numero,pvp
INDEX ON articulo+numero TO (ruta_base+"temp_pre.cdx")
COPY FILE (ruta_base + "temp_pre.*") TO (CURDIR()+"\precios.*")

USE (ruta_base+"stock.dbf") new
COPY TO ruta_base+temp_stok FIELDS artex,almex,cantex
INDEX ON almex+artex TO (ruta_base+"temp_stok.cdx")
COPY FILE (ruta_base + "temp_stok.*") TO (CURDIR()+"\stock.*")



El error que me da en la pda al ejecutar el codigo es el siguiente:


Corruption detected
stack calls:
DBUSEAREA(0)
INICIALIZA_DATOS(109)
(b)MAIN(66)
TBUTTON:CLICK(0)
TCONTROL:HANDLEEVENT(0)
SENDMESSAGE(0)
TWINDOW:COMMAND(0)
TWINDOW:HANDLEEVENT(0)
TWINDOW:HANDLEEVENT(0)
DIALOGBOX(0)
TWINDOW:ACTIVATE(0)
MAIN(70)


En cuanto al tema de la version del harbour supongo que sea esta:


Harbour Compiler Alpha build 45.0 (Flex)

Luego aparece al compilar esto otro que no se si será tambien lo que me pides...

Microsoft (R) C/C++ Optimizing Compiler Vesion 12.20.9615 for ARM



Todo esto es porque cuando intento hacer el use a la tabla articulo que contiene un campo memo me da el error...

Saludos y gracias.


Elías Torres.

PostPosted: Fri Dec 01, 2006 12:15 pm
by Carles
Elias,

Donde casca ? : haciendo el use, el copy, el index ?. Por cierto, se puede hacer copy file ( ruta + 'fichero.*' ) ? Cuando haces el use del fichero, compruebas si esta pillado por el otro programa ? Has probado copiarte a pelo la tabal a un sitio local para testear si realmente la puedes habrir bien (si tiene memo, copia el *.fpt) ?

Saludos.
C.

PostPosted: Fri Dec 01, 2006 12:45 pm
by Elias Torres
Hola Carles,

He probado hacer esto:

use(ruta_base+"articulo.dbf") new
COPY FILE (ruta_base + "articulo.dbf") to (CURDIR()+"\articulo.dbf")
COPY FILE (ruta_base + "articulo.fpt") to (CURDIR()+"\articulo.fpt")
COPY FILE (ruta_base + "articulo.cdx") to (CURDIR()+"\articulo.cdx")

use(CURDIR()+"\articulo.dbf")

y me da error en el primer use puesto que no me copia las tablas en el directorio local....

Por otro lado, si le quito el primer use, me copia las tablas pero al hacer el use(curdir()+"\articulo.dbf") me da el siguiente error:

Corruption detected
stack calls:
DBUSEAREA(0)
INICIALIZA_DATOS(113)
(b)MAIN(66)
TBUTTON:CLICK(0)
TCONTROL:HANDLEEVENT(0)
SENDMESSAGE(0)
TWINDOW:COMMAND(0)
TWINDOW:HANDLEEVENT(0)
TWINDOW:HANDLEEVENT(0)
DIALOGBOX(0)
TWINDOW:ACTIVATE(0)
MAIN(70)



La verdad es que no tengo ni idea de porque me da este error... En relacion a lo que me comentas de si compruebo si la tabla está pillada no se como hacerlo...


Un saludo...

Una curiosidad....¿puede que tenga algo que ver el que lo esté ejecutando en una pda windows CE 4.20??


Elías Torres.

PostPosted: Fri Dec 01, 2006 12:57 pm
by Antonio Linares
Elías,

El build actual de Harbour para Pocket PC es el 46.2.

Es muy importante que te actualices para usar las modificaciones más recientes en el uso de base de datos.

PostPosted: Fri Dec 01, 2006 12:57 pm
by Carles
Elias,

1.- Has probado de copiar solo la dbf y el fpt, sin el cdx ? (segun de q sistema estes trabajando, tienes q crearte tu los cdx, sino no son compatibles)
2.- Has probado de copiar manualmente los 2 fichertes y ver si desde la pda los puedes abrir ?

Code: Select all  Expand view
Una curiosidad....¿puede que tenga algo que ver el que lo esté ejecutando en una pda windows CE 4.20??


3.- Has probado p.e. el .\samples\testbrws ?

Saludos.
C.

PostPosted: Fri Dec 01, 2006 4:19 pm
by Elias Torres
Hola..

La verdad es que no he podido solucionar el tema de los campos memos. Creo, aunque no estoy muy seguro, que el error se va a deber no al tema de campos memos, sino a que no puedo acceder a una tabla que se encuentra en una base de datos de otra aplicacion, porque no consigo poder abrirla debido a que la tabla en cuestión está "enganchada" a toda la estructura de la base de datos. Digo esto porque no puedo hacer simplemente un USE a la tabla porque me dice que está corrupta...

En cambio si utilizo tablas libres no tengo ese problema.

Por este lado alguien puede darme alguna pista de como podría afrontar el problema??? Nose si hay que abrir la tabla de algun modo especifico o si hay que controlar algún tema en la tabla a la hora de abrirla.....

Por cierto Antonio, ¿que coste tiene actualizar a la última versión?

Saludos...

Elias Torres.

PostPosted: Fri Dec 01, 2006 4:48 pm
by Antonio Linares
Elías,

El problema puede residir en el uso de SHARE que parece que Windows Mobile 2005 aún no lo hace bien :-(

> Por cierto Antonio, ¿que coste tiene actualizar a la última versión?

139.20 euros. Puedes solicitarlo desde www.fivetechsoft.com sección pedidos. Tiene muchos cambios y mejoras.

PostPosted: Sun Dec 03, 2006 12:48 pm
by Elias Torres
Hola....

El problema que tengo definitivamente no es por los campos memos, sino porque no puedo acceder a ninguna tabla que no sea libre, es decir, no puedo usar ninguna tabla que se encuentre dentro de una base de datos, puesto que si intento abrirla me dice que está corrupta. Mi pregunta entonces es la siguiente: ¿No es posible utilizar tablas que ya estén definidas en otra base de datos?. ¿Siempre se ha de utilizar tablas libres?. Y por último, en el caso de que no se pueda utilizar las tablas de otra base de datos(es decir, tablas que no son libres) ¿existe la posibilidad de cambiar esas tablas a tablas libres para poder luego trabajar con ellas?

Por cierto Antonio, según comentas puede ser porque el window m5 no tiene bien implementado el uso de tablas compartidas. ¿Las nuevas actualizaciones de FWPPC contemplan estas mejoras??¿O aunque me actualice a la última versión del fwppc no voy a poder implementar lo que quiero?...


Saludos y gracias.

Elías Torres.

PostPosted: Sun Dec 03, 2006 5:00 pm
by Antonio Linares
Elías,

> no puedo usar ninguna tabla que se encuentre dentro de una base de datos

A que te refieres exactamente ? Puedes poner un ejemplo ?

PostPosted: Sun Dec 03, 2006 8:18 pm
by Elias Torres
Hola Antonio...

Estoy desarrollando una aplicación que realiza un inventario, pero con la salvedad de que la información la envio a traves de wifi. Hasta ahi todo bien. El tema es que la tabla de articulo que necesito para comenzar con el inventario está dentro de una base de datos (*.dbc) de otra aplicacion. En definitiva, cada vez que requiera actualizar la tabla de articulos para realizar el inventario me tengo que conectar al servidor y "traerme" a la pda la tabla articulo.dbf para poder trabajar con ella de forma local. El problema radica en que esta tabla forma parte de una base de datos (*.dbc), con lo que no puedo abrirla porque me dice que está corrupta. Puedo copiarla a otro lado con un copy file, pero a la hora de abrirla no encuentra el enlace con la base de datos y me dice que no se puede abrir. He probado incluso a traerme el *.dbc al directorio local (donde almaceno una copia de la tabla articulo.dbf) pero nada, no me deja abrirla. Sin embargo si esa tabla en vez de pertenecer a una base de datos fuera una tabla libre,entonces no hay ningun problema... Nose si me he explicado..

Si hubiera alguna forma de romper ese vinculo con la base de datos para que la tabla articulo.dbf pasara a ser libre se solucionarían todos los problemas, pero no se como hacerlo...


Saludos y gracias..

Elías Torres.

PostPosted: Mon Dec 04, 2006 1:27 am
by Antonio Linares
Elías,

Te entiendo. Una base de datos (*.DBC) en FoxPro es en realidad una DBF renombrada y contiene los nombres de las tablas (DBFs) que controla.

Tal vez cambie algún byte en la cabecera de la DBF para indicar que pertenece a una DBC. Lo idóneo sería comparar a nivel bytes (binario) la DBF que pertenece a la DBC, y la misma libre. Tal vez podamos cambiar esos bytes y hacer que tenga la estrutura de una DBF normal.

Por favor envíame por email una DBF que solo tenga un campo y que pertenezca a una DBC, y la misma DBF con la misma estructura, que no pertenezca a una DBC, y vamos a compararlas a bajo nivel.