Gracias Ricardo por lo ejemplos.
Me gusto el de abrir el contenedor DBC, me gusta de vez en cuando meter mano en las "entrañas" del VFP.
Agregaría a tus soluciones, la que dieron Alex y Hugo:
CursorGetProp("SourceType")
para poder determinar en caso de ser una vista, saber si es local o remota.
Saludos,
RFR
>Hola tocayo:
>Se me ocurren dos opciones:
>a) Utilizar la función DbGetProp()y atrapar el error:
>
>Open Database MiDataBase
>TRY
> cAlias=Alias()
> lOk = .T.
> DBGetProp(cAlias,"VIEW","Comment")
>
>CATCH TO oErr
> lOk = .F.
>
>FINALLY
>
>EndTry
>
>IF lOk
> =MessageBox(cAlias + " Es una Vista")
>
>Else
> TRY
> lOk = .T.
> DBGetProp(cAlias,"DATABASE","Comment")
> CATCH TO oErr
> lOk = .F.
>
> FINALLY
>
> EndTry
>
> IF lOk
> =MessageBox(cAlias + " Es una Tabla")
> EndIf
>ENDIF
>
>
>b) Abrir la .dbc como una tabla y buscar el nombre y el tipo:
>
>Use MiDataBase.dbc Again Shared
>
>cAlias=Lower(Alias())
>Locate for Lower(ObjectName)=cAlias .and. Lower(ObjectType)="view"
>
>IF !Eof()
> =MessageBox(cAlias + " Es una Vista")
>ELSE
> Locate for Lower(ObjectName)=cAlias .and. Lower(ObjectType)="table"
> IF !Eof()
> =MessageBox(cAlias + " Es una Tabla")
> EndIf
>EndIf
>
>Use
>
>
>
>
>>Tenemos un caso particular, en el cual nos integramos con una aplicación de terceros escrita en VFP con DBC y vistas, locales, remotas y tablas asociadas al DBC.
>>
>>La pregunta es:
>>Como se si los datos abiertos son una vista local, una vista remota o una tabla ?
>>Por ejemplo, la rutina nuestra se ejecuta y pregunta por la función ALIAS(), si no es vacia, esta devuelve un nombre, pero el tema es que tenemos que tener un tratamiento si una vista remota, si vista local y otro si es un DBF del contenedor seleccionado.
>>
>>Existe alguna función ?
>>Gracias.