FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Existe la funcion FILE() en RDDADS ?
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Existe la funcion FILE() en RDDADS ?
Posted: Sat Nov 05, 2011 01:26 PM

Hola amigos del foro:

Alguien sabe si ADS proporciona una función parecida a FILE(), para verificar la existencia de una tabla que esta definida en el diccionario?

Puede suceder que se elimine una tabla físicamente, sin modificar el diccionario y al intentar abrirla se produce un error.

Puedo usar la función File(), pero si la verificación la hace el Servidor ADS seria mejor.

De antemano, gracias por la ayuda.

Atentamente,

Rolando.

Saludos desde Cochabamba, Bolivia.

Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Existe la funcion FILE() en RDDADS ?
Posted: Sat Nov 05, 2011 08:14 PM

ceo que los tiros iran por obtener una lista de las tablas contenidas en la base de datas con una instruccion tipo sql
por ejemplo creo que en mysql es list tables, dejame revisar en la doc.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Existe la funcion FILE() en RDDADS ?
Posted: Sat Nov 05, 2011 08:41 PM

pues no encontre nada :-(, pero puedes usar un try cacth end para interceptar el error al abrir una tabla que no existe :-)
podria ser algo asi

function adsExistTable( cTable )
local oErr
local lExist := .t.
if empty(cTable )
return .f.
return
try
use (cTable)
catch oErr
lExist := .f.
end
use
return lExist

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Existe la funcion FILE() en RDDADS ?
Posted: Sun Nov 06, 2011 12:30 AM
Hola

puede que te sirva la funcion adsdirectory(), yo la utilizo para reindexar las tablas

Code (fw): Select all Collapse
aIndex := AdsDirectory()
oMeter:nTotal := Len( aIndex )

for i := 1 to len( aIndex )
    cDbf := Left( aIndex[i], len( aIndex[i] )-1 )
    oMeter:cText := "Creando Indice para BD :"+cDbf
    oMeter:Set( i )
    if Netuse( cDbf, .f. )
        if ADSGETNUMINDEXES() > 0
            if !AdsReindex()
                MsgInfo( AdsGetLastError(), "Usuario" )
            endif
        endif
    endif
    USE
next i
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl

Continue the discussion