Utilizar tabla .dbf con índice .mdx en Vfp9

581 views
Skip to first unread message

Masternet

unread,
Apr 26, 2011, 12:56:20 PM4/26/11
to Comunidad de Visual Foxpro en Español
Hola a todos,

Tengo un programa de facturación que está programado en Delphi y
utiliza tablas .dbf e índices .mdx

Quiero utilizar algunas tablas para añadir registros desde Vfp9 pero
no sé si es posible abrirlas con su índice correspondiente.

¿Hay alguna forma de hacer esto, sin tener que reindexar luego desde
Delphi?

Gracias
Message has been deleted

Carlos Miguel FARIAS

unread,
Apr 27, 2011, 4:22:46 PM4/27/11
to publice...@googlegroups.com
Los indices son particulares de cada motor de sgbd, los cdx que maneja fox son distintos a los que usa dbase (que usa mdx), internamente los mdx son distintos y VFP no tiene capacidad de modificarlos.
Es mas si intentas crear un indice CDX sobre los dbf, puede que delphi no pueda luego acceder a esas tablas.
Otra cosa que puede pasar que luego de insertar los registros, debas si o si reindexar desde delphi.
La única opcion que se me ocurre es que accedas via odbc para dbase.

El 27 de abril de 2011 11:49, Masternet <maste...@hotmail.com> escribió:
Hola,

¿Nadie ha hecho nada parecido?

ZeRoberto

unread,
Apr 27, 2011, 9:49:34 PM4/27/11
to publice...@googlegroups.com
Abrelo con el DBU de clipper, me imagino que ahi andara bien, aunque clipper nativamente no puede abrir MDX creo o si?, ya se me olvido.
 
Saludos

Carlos Miguel FARIAS

unread,
Apr 28, 2011, 4:13:06 PM4/28/11
to publice...@googlegroups.com
Pero tiene que hacerlo en VFP, porque no tiene clipper, y tiene que mantener las mdx.
Clipper creo usaba su propio sistema de gestion de indices, porque se abrio de dbase antes de que saliera la versión cuatro, que maneja los mdx.

Masternet

unread,
Apr 29, 2011, 9:58:17 AM4/29/11
to Comunidad de Visual Foxpro en Español
Hola Carlos,

¿Entonces si abro las tablas mediante odbc los índices mdx se
actualizarán?

Te agradecería, si tienes algún ejemplo de conexión y uso de datos que
pueda utilizar

Muchas gracias.

On 27 abr, 22:22, Carlos Miguel FARIAS <carlosmiguelfar...@gmail.com>
wrote:
> Los indices son particulares de cada motor de sgbd, los cdx que maneja fox
> son distintos a los que usa dbase (que usa mdx), internamente los mdx son
> distintos y VFP no tiene capacidad de modificarlos.
> Es mas si intentas crear un indice CDX sobre los dbf, puede que delphi no
> pueda luego acceder a esas tablas.
> Otra cosa que puede pasar que luego de insertar los registros, debas si o si
> reindexar desde delphi.
> La única opcion que se me ocurre es que accedas via odbc para dbase.
>

Carlos Miguel FARIAS

unread,
Apr 29, 2011, 5:40:08 PM4/29/11
to publice...@googlegroups.com
Lei por ahi que era factible, pero no se si funciona.
Si conseguis odbc especificos para dbf de dbase IV, tendria que funcionar, el problema es que las tablas dbf no tienen un SGBD especifico.
Si lei que si las abris con vfp y las indexas con un cdx, se pierde la accesibilidad desde dbase.
Y tambien, se que hay diferencias en el manejo de los campos memo, por lo que si modificas un campo memo con vfp, podes tener problema con dichos campos.
Cuidado. Un pack sobre la base, desincroniza la mdx de la dbf.
No tengo ejemplos, no uso dbf de dbase

Masternet

unread,
May 19, 2011, 3:43:18 PM5/19/11
to Comunidad de Visual Foxpro en Español
¿Ninguno ha realizado lo que necesito?
;(

Carlos Miguel FARIAS

unread,
May 19, 2011, 5:15:47 PM5/19/11
to publice...@googlegroups.com
Masternet buscastes en Internet?

Masternet

unread,
May 20, 2011, 6:10:21 AM5/20/11
to Comunidad de Visual Foxpro en Español
Si Carlos,

He mirado y remirado y no he encontrado solución.
Otros usuarios se encontraron con el mismo problema en el pasado y no
lo pudieron solucionar, pero claro son foros muy antiguos del
2003-2005

El problema es que hacía más de 15 años que no programaba y ahora que
he conseguido hacer algunas cosas en VFP, tengo que realizar parte de
código en otro lenguaje que soporte los índices .mdx.
He probado con Dbase 2000 para Windows y al parecer los coje sin
problemas, pero me molesta tener que utilizar 2 lenguajes de
programación.

Con VFP he programado un formulario que me permite recojer los pedidos
de mi tienda online realizada en Prestashop, y crear 2 tablas: una
para los datos del cliente y otro con los datos del pedido.
La intención es mediante estas 2 tablas, dar de alta el cliente y el
pedido en mi programa de Gestión.

Al no poder acceder a los índices me veré obligado a crear un
ejecutable en Dbase (que no sé si funcionará con W7 64)
La opción de realizar esto con VFP y luego reindexar con Dbase no es
factible, porque el programa de Gestión funciona en red y obligaría a
salir a todos los usuarios para reindexar.

Sería de agradecer si alguien tiene solución para este problema.

Gracias a todos.

Jairo Miranda

unread,
May 20, 2011, 11:15:26 AM5/20/11
to publice...@googlegroups.com
Una pregunta....

En alguna parte del programa tienes una rutina para reindezax , es decir una
rutina que borra los índices y luego los crea, porque si lo tienes solo es
cambiar la instrucción por un set Order to Tag y generaría índices
estructurtados CDX de fox
Te mando esta rutina de una amigo foxcero
*--------------------------------------------------------
*Es un pequeño programa que regenera indices,
*pero a partir de un directorio dado, o sea lo pongo en un directorio y el
*comienza a recolectar todas las tablas del directorio y crea un nuevo prg
*para crear los indices de cada tabla, a mi me gusto mucho, espero que os
*sirva si es que aun no lo tienes, gracias amigo, y saludos desde Paraguay.
*Lic. Pedro David Ovando
*Dpto. Informática
*Facultad Politécnica UNE
*CDE- Paraguay

Function crearIndices
*/ Programa para crear un prg de indexaciones de todos los Dbf's Actuales.
*/ Programador: David Ovando
*/ Local: MercoSoft
*/ Fecha: 18/08/1999-
*/ Ult. Modif. 23/08/1999 = .Punto: se ha agregado la sentencia delete tag
all en caso de rupturas.
close all
=adir(matriz,'*.dbf')
=asort(matriz)
x_canal = fcreate('indexar.prg')
for c=1 to int(alen(matriz)/5)
use (matriz(c,1))
if tagcount()>0
=fput(x_canal,'use '+matriz(c,1)+' exclusive')
=fput(x_canal,'delete tag all')
for k=1 to tagcount()
=fput(x_canal,'index on '+sys(14,k)+chr(9)+'tag '+TAG(k))
endfor
=fput(x_canal,' ')
endif
endfor
=fclose(x_canal)
modi file indexar.prg
*--------------------------------------------------------
Jairo

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Masternet
Enviado el: Viernes, 20 de Mayo de 2011 05:10
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Utilizar tabla .dbf con índice .mdx en Vfp9

Carlos Miguel FARIAS

unread,
May 20, 2011, 4:12:34 PM5/20/11
to publice...@googlegroups.com
Tu programa de gestion no tiene un importador desde planilla de calculo?
Si fuera asi, desde vfp exportas a excel y levantas a la vuelta.
Si metes registros directos, desactualizas el mdx. y te obliga a reindexar en el de gestion.
Reply all
Reply to author
Forward
0 new messages