Hola Nacho
Esto funciona solo para bases de datos (dbc) y tablas nativas de vfp,
aun debo adaptarlo para Cliente/servidor. Y es util cuando se tienen
muchos clientes utilizando una misma aplicacion, pues evita el trabajo de
alterar tabla por tabla, campo por campo, indice por indice. Es
decir, facilita el mantenimiento y actualizacion entre versiones.
o que hace el procedimiento es crear un cursor como el mostrado mas
abajo:
Junto con el .exe distribuido va acompañado de 2
tablas: Nomsistema.estructrura y nomsistema.indice (en
realidad son trablas con estructura .dbf) que contiene toda la informacion sobre
la estructura e indice que corresponden a la ultima version del exe
distribuido.
Lo que hace se hace es generar la estructura e
indice de la base actual y los compara con la version ultima.
Del resultado comparado se obtienen:
Los campos a ser alterados ALTER TABLE ALTER
COLUMN ...
Los campos a ser adicionados ALTER
TABLE ADD COLUMN ...
Los campos a ser elimandos ALTER
TABLE DROP COLUMN ...
Lo mismo hace con los indices
Ejemplo de cursor creado para comparacion
SELECT 2
CREATE CURSOR cur_comparado(;
m_basedatos
c(50),;
m_table c(50),;
m_field c(30),;
m_type c(1),;
m_width
i,;
m_decimal i,;
c_accion c(100),;
c_acciondbc c(100),;
l_basedatos
c(50),;
l_table c(50),;
l_field c(30),;
l_type c(1),;
l_width
i,;
l_decimal i,;
lmarcado l,;
cmdupdate M,;
cmdupddbc M,;
cmdsql
M)