Otra mas del maestro Luis Maria Guayán y Sergey Berezniker, aqui presento (con su permiso) dos ejemplos para ubicar un campo en un DBC, este codigo esta publicado en el portal de pueblo PortaFox, es muy util cuando tenemos muchas tablas y requerimos ubicar un campo el cual solo conocemos por su nombre.

*** 1 ***********************************************************
lcDBC = HOME(2) + “NORTHWIND\NORTHWIND.DBC”
USE (lcDbc) ALIAS MyDbc
*– Campo a buscar
lcFieldName = “City”
SELECT LEFT(db1.ObjectName,50) AS TableName, LEFT(db2.ObjectName,50) AS FieldName ;
FROM mydbc db1 JOIN mydbc db2 ON db1.ObjectId = db2.ParentId ;
WHERE db1.ObjectType = “Table” ;
AND db2.ObjectType = “Field” AND db2.ObjectName = LOWER(lcFieldName)
USE IN SELECT(“MyDbc”)

*** 2 **************************************************************
lcDBC = HOME(2) + “NORTHWIND\NORTHWIND.DBC”
OPEN DATABASE (lcDbc)
lnTables = ADBOBJECTS(laTables, “TABLE”)
*– Campo a buscar
lcFieldName = “City”
FOR lnI = 1 TO lnTables
USE (ADDBS(JUSTPATH(lcDBC)) + laTables(lnI)) ALIAS “Tmp”
lnFields = AFIELDS(laFields, “Tmp”)
IF ASCAN(laFields,lcFieldName,1,ALEN(laFields,1),1,9) > 0
? DBF(“Tmp”)
ENDIF
USE IN SELECT(“Tmp”)
ENDFOR
CLOSE DATABASES