Automatizar el agregar nuevos campos a mistablas dbf

425 views
Skip to first unread message

RoCM

unread,
Jul 5, 2012, 1:47:37 PM7/5/12
to publice...@googlegroups.com

Buenas tardes amigo foxeros

 

Como puedo hacer de forma automática agregar campos a mis tablas ( son dbf)  ya que es un sistemas que tengo en varios lados

 

De antemano gracias.

 

 

Luis Maria Guayan

unread,
Jul 5, 2012, 1:47:12 PM7/5/12
to publice...@googlegroups.com
Mira la ayuda de ALTER TABLE

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

gonzal...@hotmail.com

unread,
Jul 5, 2012, 1:59:28 PM7/5/12
to publice...@googlegroups.com
Lo que tienes que hacer es: crear una funcion donde creas tablas ej:
creacion()
    create table Sucursal free (cod_su c(1),nombre c(25),direccio c(60),aut c(15),fecha_doc d)
    index on cod_su tag cod_su
.
.
.
y otra funcion donde actualizas tablas e indices
en mi caso: hice una funcion que se llama reindexado()
donde copio las tablas actuales a un directorio temporal
luego llamo a la funcion creacion()
donde se crean las tablas ya con los nuevos campos
seguidamente desde el directorio temporal hago el append from a cada tabla, esto me actualiza los campos y los indices.

Espero te sirva la idea.

Un saludo.

Allan Raúl Acuña

unread,
Jul 5, 2012, 2:16:33 PM7/5/12
to publice...@googlegroups.com
Aca algunos Ejemplo:


Use PARAMETROS Exclusive
Alter Table PARAMETROS Add Column no_contrato N(20)

Use CLIENTES Exclusive
Alter Table CLIENTES Add Column correo c(100)

Use COMPRASH Exclusive
Alter Table COMPRASH Add Column correo c(100)
Alter Table COMPRASH Add Column celular c(100)

Saludos cordiales;

Lic. Allan R. Acuña
Desarrollador Independiente
msn= allan...@hotmail.com
skype= niceasysoft
            +(505) 8 831 8191      
www.NicEasySoft.com
Managua, Nicaragua
Centroamérica



Date: Thu, 5 Jul 2012 14:47:12 -0300
From: luism...@gmail.com
To: publice...@googlegroups.com
Subject: Re: [vfp] Automatizar el agregar nuevos campos a mistablas dbf

Ricardo Pina

unread,
Jul 5, 2012, 2:22:00 PM7/5/12
to publice...@googlegroups.com
Hola
 
Algunos ejemplos
 
Use (lcdonde+"tutabla") Excl
* Agrega campo
If Type("tutabla.obs")="U"
 Alter Table tutabla Add Column obs C(4)
endif
* Cambia longitud
If Fsize("tutabla.obs")<50
 Alter Table tutabla Alter Column obs c(50)
Endif
* Cambia Nombre
If Type("tutabla.obs2")<>"U"
 Alter Table tutabla Add Column obsn n(15,2)
 repla all obsn with obs2
 Alter Table tutabla drop Column obs2
endif
 
* borra campo
If Type("tutabla.obs")<>"U"
 Alter Table tutabla drop Column obs
endif
 
use
 
Saludos

 
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 


Mario Oviedo

unread,
Aug 7, 2012, 10:25:55 PM8/7/12
to publice...@googlegroups.com
barbaro ricardo

foxteban

unread,
Aug 7, 2012, 11:05:29 PM8/7/12
to publice...@googlegroups.com
Hola RoCM
 
Mira yo he creado una tabla con los nombres de los campos de cada tabla que integra el sistema. A partir de esta tabla compara la extructura de las que tengo y bueno si le falta un campo pues lo agrega o si la tabla no existe la crea. Esta bastante interesante ya que si quieres agregar algun campo nuevo solo tienes que insertarlo en esta tabla general.y haces correr la funcion. Si quieres te puedo enviar el form con la tabla maestra.
A tu disposicion
Saludos
Esteban 
Message has been deleted
Message has been deleted

CAC Grupo Centrosoft - Carlos A. Coronel - Cúcuta /Colombia

unread,
Aug 8, 2012, 1:17:54 AM8/8/12
to publice...@googlegroups.com
espero te sirva este codigo.. lo tengo en una prg que llamo al inicio de la aplicación, verificando que no hayan usuarios en el sistema y evitando que mientras se realiza el proceso ingresen los usuarios...

saludos

***para tablas existentes
 IF  .NOT. USED('items')
    SELECT 0
    USE shared items INDEX items  
    w_used_items = 1
 ENDIF
 SELECT items
 w_encuentra = 0
 FOR gncount = 1 TO FCOUNT()
    IF UPPER(FIELD(gncount))='MOD_PREC'
       w_encuentra = 1
    ENDIF
 ENDFOR
 IF w_encuentra=0
    USE
    USE EXCLUSIVE items
    ALTER TABLE items ADD COLUMN mod_prec 'C' (1)
 ENDIF 
 IF w_used_items=1
    SELECT items
    USE
 ENDIF

**para crear nuevas tablas
 IF  .NOT. FILE('formato.dbf')
    CREATE TABLE formato FREE (inicio M, final M, medida_i C (10), medida_f C (10))
    USE
 ENDIF

Reply all
Reply to author
Forward
0 new messages