Page 1 of 1

Como puedo saber si tengo un campo en una base de datos.

Posted: Wed Sep 06, 2006 4:24 pm
by colthop
Hola amigos:

Tengo un problema ya que tengo un programa que tengo hace tiempo y o usan varias personas y estoy actualizando una de las opciones. Mi problema es el siguiente como puedo saber si una base de datos ya creada tiene un campo determinado por ejemplo en la base de CLIENTES el campo APELLIDOS y si no existe poder crearlo.

Un saludo

Carlos

Posted: Wed Sep 06, 2006 5:52 pm
by Garbi
Con afields() obtienes los campos del fichero:

LOCAL aNombresCampo, aTipos, aAnchuras, aDecimales
USE Ventas NEW
//
aNombresCampo := Ventas->(ARRAY(FCOUNT()))
aTipos := Ventas->(ARRAY(FCOUNT()))
aAnchuras := Ventas->(ARRAY(FCOUNT()))
aDecimales := Ventas->(ARRAY(FCOUNT()))
//
Ventas->(AFIELDS(aNombresCampo, aTipos, ;
aAnchuras, aDecimales))
Despues buscas si existe el campo en la tabla.

Despues con CREATE puedes crear el fichero o copiarlo , ya depende como lo prepares.

Posted: Thu Sep 07, 2006 7:59 am
by colthop
Gracias Garbi, por tu ayuda lo que practicamente me faltaba era conseguir cual era el ultimo dato de un array y tu me lo has solucionado con fCount(), que me dice la cantidad de campos de un fichero, ya que hay una funcion que hace lo mismo que tu me indicas pero en una sola linea y muy facil, es

aFileds : DBStruct()

con esto consigues lo mismo.

Un saludo y gracias.

Posted: Fri Sep 08, 2006 6:32 pm
by Manuel Valdenebro
Asi es como yo lo hago:

IF FIELDPOS("APELLIDOS") = 0
// el campo no existe
FUNCION_ACTUALIZAR_ESTRUCTURA()
ENDI