FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ListTables en Dolphin
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
ListTables en Dolphin
Posted: Wed Jul 30, 2014 03:00 AM

Para Daniel!
Hay alguna forma de diferenciar las tablas de las vistas cuando llamamos a esta función?
Gracias de antemano...

Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ListTables en Dolphin
Posted: Wed Jul 30, 2014 12:58 PM
puedes hacer un query propio con esta info

contiene solo tablas
Code (fw): Select all Collapse
show full tables where table_type='BASE_TABLE';


contiene solo vistas
Code (fw): Select all Collapse
show full tables where table_type='VIEW';


cuidado, verificar version de mysql, leer esta info
http://dev.mysql.com/doc/refman/5.0/es/show-tables.html
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ListTables en Dolphin
Posted: Wed Jul 30, 2014 12:59 PM

hoy tarde verificare este método, para ver si es posible modificar su comportamiento según el post anterior.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: ListTables en Dolphin
Posted: Wed Jul 30, 2014 02:09 PM
Gracias por responder y por tu tiempo Carlos!
Efectivamente, si hago un SHOW FULL TABLES me muestra de manera extendida que tipo de tabla es.
Debería hacer una funcion propia de este estilo
Code (fw): Select all Collapse
// Retorna un arreglo con los nombres de las tablas 
FUNCTION ListTabFul(oCon, nType) 
LOCAL oQry
// nType 0: todas, 1: Tablas, 2: Vistas
// oCon la conexion activa - Aca supongo que ya tiene una base de datos en uso por eso uso oCon:cDBName
// También podría mejorarse pasando como parametro el nombre de la base de datos.
DEFAULT nType := 0
nType := IF(nType<0 .or. nType>2,0,nType)
oQry := oCon:Query("SELECT table_name, table_type FROM information_schema.tables"+;
                    " WHERE table_schema = " + ClipValue2Sql(oCon:cDbName) + " AND " +;
                     IF(nType=0," TRUE ",IF(nType=1,"TABLE_TYPE = 'BASE TABLE'", "TABLE_TYPE = 'VIEW'")))
oQry:GoTop()
RETURN oQry:FillArray(,{"table_name"})

Continue the discussion