Estas dos maneras de buscar el nombre de un campo en todas las tablas de una base de datos, son respuestas a una pregunta de un usuario del foro de
UT, enviadas por por Sergey Berezniker y Luis María Guayán respectivamente.
*** 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
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.