FoxPro/Visual FoxPro - Ayuda con ASCAN

 
Vista:

Ayuda con ASCAN

Publicado por MARIA ANTONIETA (147 intervenciones) el 11/12/2003 16:19:01
Hola Amigos de LWP:

Tengo este codigo, para detectar si en la tabla MAEALM, esta el , campo "s_ini2004", pero aunque exista, siempre lo crea y logicamente, me da el error de duplicidad de campo. Que es esta mal de este codigo. porque nunca lo detecta.
POR FAVOR AYUDENME

Miinventa = 's_ini2004'

crea tabl sys(5)+U_RUTA+'TEMPO' (miCAMPO C(10))
use
use sys(5)+U_RUTA+'TEMPO' alias TEMPO in 0 excl
INSERT INTO TEMPO (Micampo) VALUES (Miinventa)

SELE TEMPO
COUN TO T_CP
DIME C_P(1,T_CP)

STOR 0 TO X
SCAN
X = X + 1
C_P(1,X) = TEMPO.Micampo
ENDSCAN

SELE MAEALM
T_CM = FCOUNT()
DIME C_M(1,T_CM)
FOR C = 1 TO T_CM
C_M(1,C) = FIELD(C)
NEXT

FOR II = 1 TO T_CP
WAIT WINDOWS C_M+C_P
existe=ascan(C_M,C_P(1,II))
IF EXISTE = 0
minombre=c_P(1,II)+" N(12,2)"
SELE MAEALM
alter table MAEALM add column &minombre
ENDIF
ENDFOR

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con ASCAN

Publicado por Roman Suazo (2723 intervenciones) el 11/12/2003 17:37:56
Muchas veces se me hace mas facil crear mi propio codigo que analizar
el de otras personas...

Checa a ver si te sirve esto:

LOCAL ARRAY aCamposTabla(1,1)
LOCAL i, lEncontrado

i=0
lEncontrado=.F.


SELEC Mitabla
IF AFIELDS(aCamposTabla)>=1

FOR i=1 TO FCOUNT('MiTabla')
IF aCamposTabla(i,1)==upper("MiCampo")
lEncontrado=.T.
EXIT
ENDIF
ENDFOR
ENDIF

IF !lEncontrado
*Alteras Tabla
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aclarando un poco...

Publicado por Roman Suazo (2723 intervenciones) el 11/12/2003 17:53:15
Este codigo te dice si existe un campo en la tabla seleccionada, uso
el FOR en vez del ASCAN, ya que el ascan busca en todas los celdas
del arreglo, entonces se corre el riesgo de que en alguna otra celda se encuentre el valor que buscamos (que no necesariamnete seria el nombre de un campo). Por ejemplo, supongamo que buscamos un
campo llamado i, el cual no existe en la tabla, pero ta vez en la tabla
hay un campo tipo integer, por lo tanto el ASCAN te diria que existe ese
campo cuando en realidad no es asi. Podria ser este caso raro, pero
mejor programar de una manera segura

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias

Publicado por MARIA ANTONIETA (147 intervenciones) el 11/12/2003 17:57:27
Hola Roman:

Y gracias por tu ayuda, es esto lo que queria.....

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar