Modificar tabla desde alter table

3,892 views
Skip to first unread message

Walter Boso

unread,
Jun 8, 2011, 4:07:11 PM6/8/11
to Grupos Google Fox
Hola amigos mi pregunta es la siguiente, ya tengo creada una tabla dentro de una base de datos e instalada en mi cliente, ahora necesito crear un nuevo indice a esa tabla se puede crear utilizando el alter tabla si es asi como seria el codigo.
desde ya muchisimas gracias.
 
 
Walter Italo Boso
Cabildo Abierto 1612 V.Hipodromo
Godoy Cruz (5547)
Mendoza
Argentina
Tel.: (54)(0261) 4281235
Cel.: 2614161434.-
Walte...@bosoft.com.ar
Walte...@yahoo.com.ar

Irlandes 1960

unread,
Jun 8, 2011, 4:16:02 PM6/8/11
to publice...@googlegroups.com
Hola, asumiendo que estas con tablas nativas de vpf, un ejemplo seria:

IF MESSAGEBOX

('MODIFICA ESTRUCTURA DE SERVICIOS PARA AGREGAR EL CONCEPTO DE PLUS AL SERVCIO',32+4,'CONFIRME') = 7

    RETURN

ENDIF

WAIT WINDOW NOWAIT

'AGREGANDO CAMPODE PLUS DEL SERVICIO...'

IF USED

('cgservic')

   USE IN cgservic

ENDIF

SELECT

0

TRY

   USE

cgrales!cgservic EXCLUSIVE

   =afields(laestruc)

   lccampo = 'PLUS'

   if ascan(laestruc,UPPER(lccampo)) = 0

       ALTER TABLE CGSERVIC ADD PLUS C(10)

       INDEX ON PLUS TAG PLUS

   ENDIF

   USE

CATCH

    MESSAGEBOX

('NO PUDO ABRIR LA TABLA DE SERVICIOS PARA MODIFICARLA'+CHR(13)+'Verifique que esten fuera del sistema',16,'proceso cancelado')

ENDTRY

Norberto

unread,
Jun 8, 2011, 4:20:46 PM6/8/11
to Comunidad de Visual Foxpro en Español
use precios in 0 exclu
*Si es un indice como clave primaria necesitas alter table
ALTER TABLE 'PRECIOS' ADD PRIMARY KEY LISTA_ID TAG LISTA_ID
*sino basta con:
INDEX ON NOMBRE TAG NOMBRE
> Walter_b...@bosoft.com.ar
> Walter_b...@yahoo.com.ar

Intel Man

unread,
Jun 8, 2011, 11:09:28 PM6/8/11
to publice...@googlegroups.com
Create un prg que luego lo puedes pasar a .exe:

use tutabla exclusive
index tag tuindicetag on tuscampos

Saludos



Date: Wed, 8 Jun 2011 13:07:11 -0700
From: walte...@yahoo.com.ar
Subject: [vfp] Modificar tabla desde alter table
To: publice...@googlegroups.com

miltonvas

unread,
Jun 9, 2011, 4:13:14 PM6/9/11
to Comunidad de Visual Foxpro en Español
yo tengo un programa llamado cambios, que se ejecuta al arrancar la
aplicacion

*************
sistema.prg
*****************
=seteado()
=cambios()
do form frmentrada
return


*****************************
cambios.prg
**********************+
WAIT WINDOW NOWAIT "Verficando consistencia..."
DO use WITH 'TPAS'
IF LEN(dscr)<>30
DO use WITH 'tpas excl'
ALTER TABLE tpas alter COLUMN dscr c(30)
DO use WITH 'tpas'
ENDIF
DO use WITH 'varimaq'
IF TYPE('maqid')='U'
USE
ALTER TABLE varimaq ADD COLUMN maqid'C' (20)
DO USE WITH "varimaq"
ENDIF
DO use WITH "qdocs orde k1"
IF TYPE('formato')='U'
USE
ALTER TABLE qdocs ADD COLUMN formato 'C' (50)
DO USE WITH "qdocs"
ENDIF

DO use WITH 'vari'
IF TYPE('qfmt')='U'
USE
ALTER TABLE vari ADD COLUMN qfmt 'C' (1)
DO USE WITH "vari"
ENDIF
DO use WITH 'bode'
IF TYPE('bodext')='U'
USE
ALTER TABLE bode ADD COLUMN bodext 'C' (10)
DO USE WITH "bode"
ENDIF
DO use WITH 'autoproc'
IF TYPE('estado')='U'
USE
ALTER TABLE autoproc ADD estado 'C' (1)
DO use WITH 'autoproc'
ENDIF
IF TYPE('amail')='U'
USE
ALTER TABLE autoproc ADD amail 'C' (1)
DO use WITH 'autoproc'
ENDIF
DO use WITH 'tram'
IF TYPE('uobse')='U'
USE
ALTER TABLE tram ADD uobse 'N' (6)
DO use WITH 'tram'
ENDIF

DO use WITH 'facdrec'
IF TYPE('semaf')='U'
USE
ALTER TABLE facdrec ADD semaf 'C' (1)
DO use WITH 'facdrec'
ENDIF

IF TYPE('ulact')='U'
USE
ALTER TABLE facdrec ADD ulact 'C' (30)
DO use WITH 'facdrec'
ENDIF

DO use WITH 'varimaq'
IF TYPE('maqid')='U'
USE
ALTER TABLE varimaq ADD COLUMN maqid'C' (20)
DO USE WITH "varimaq"
ENDIF

**********************************************************
WAIT WINDOW NOWAIT "verificando indices..........."
***********verificar indices
=verindex("cmpc","k5","auto")
=verindex("cmpc","k6","importa")
******************************************

proc verindex
PROCEDURE verindex
LPARAMETERS ktabla,ktag,kindexstru
DO use WITH ktabla+" shared"
kerridx=1
FOR i=1 TO TAGCOUNT()
IF UPPER(TAG(I))=UPPER(ktag)
kerridx=0
ENDIF
ENDFOR
IF kerridx<>0
DO use WITH ktabla+" excl"
kcomando="INDEX ON "+kindexstru+" TAG "+ktag
&kcomando
ENDIF




On 8 jun, 15:16, Irlandes 1960 <irlandes1...@gmail.com> wrote:
> Hola, asumiendo que estas con tablas nativas de vpf, un ejemplo seria:
>
> IF MESSAGEBOX('MODIFICA ESTRUCTURA DE SERVICIOS PARA AGREGAR EL CONCEPTO DE
> PLUS AL SERVCIO',32+4,'CONFIRME') = 7
>
>     RETURN
>
> ENDIF
>
> WAIT WINDOW NOWAIT 'AGREGANDO CAMPODE PLUS DEL SERVICIO...'
>
> IF USED('cgservic')
>
>    USE IN cgservic
>
> ENDIF
>
> SELECT 0
>
> TRY
>
>    USE cgrales!cgservic EXCLUSIVE
>
>    =afields(laestruc)
>
>    lccampo = 'PLUS'
>
>    if ascan(laestruc,UPPER(lccampo)) = 0
>
>        ALTER TABLE CGSERVIC ADD PLUS C(10)
>
>        INDEX ON PLUS TAG PLUS
>
>    ENDIF
>
>    USE
>
> CATCH
>
>     MESSAGEBOX('NO PUDO ABRIR LA TABLA DE SERVICIOS PARA
Reply all
Reply to author
Forward
0 new messages