OPENTABLE()

//
// OpenTable(cSql,lFill,oOdbc,lChecktable,lExcluye,lDicc,lLimit,lLower)
// Parámetros
//
// Devuele en Cursor Virtual mediante la clase TTABLE contentivo de los registros de una Sentencia SQL mediante la conexion con una base de datos bien sea Nativa MySQL u conexión ODBC
//
1 cSql := "DPUSUARIOS" // Nombre de la tabla o Sentencia SQL, caso de nombre de la tabla "DPUSUARIOS" asumirá "SELECT * FROM DPUSUARIOS"
2 lFill :=.T. // Valor por defecto es .T. Lectura de Registro o Cursor Vacio para insertar Registros
3 oOdbc := NIL // Objeto de la Base de datos, En caso de ser vacio será obtenido mediante la funcion OpenOdbc() desde el diccionario de datos según nombre de la tabla
4 lCheckTable :=.F. // Revisa la sintaxis SQL y Existencia de las tablas vinculadas de la Sentencia SQL
5 lExcluye :=oDp:lExcluye // Agrega exclusiones en la clausula WHERE
6 lDicc :=.T. // Valida las tablas en el diccionario de Datos, para ser utilizado con otras bases de datos, indicar .F.
7 lLimit :=.F. // Agrega paginado mediante la sentencia LIMIT
8 lLower :=.F. // Convierte el nombre de las tablas en minúscula, según el diccionario de datos.

FUNCTION OpenTable(cSql,lFill,oOdbc,lChecktable,lExcluye,lDicc,lLimit,lLower)
   LOCAL oCursor,cTable:=CTABLE(cSql)

   DEFAULT oOdbc:=OPENODBC(cTable)

   oCursor:=TTable():New( NIL, cSql, oOdbc, NIL, IIF(lFill, 0, 1 ), NIL, NIL, NIL, lLower)

RETURN oCursor

METHOD New(oCursor,cSql,oOdbc,cTable,nOption,cPrimary,lCheck,lLimit,lLower) CLASS Ttable
     LOCAL oCursor,cTable:=CTABLE(cSql)

     DEFAULT oOdbc:=OPENODBC(cTable)

   IF oOdbc:ClassName()<>”TODBC”
      oCursor:=MyTable(cSql,.T.,oOdbc:cDsn,NIL,oOdbc)
   ELSE
      oCursor :=oOdbc:Query(cSql)
   ENDIF

RETURN oCursor/

//EOF

Solicita un cursor de datos SQL.

Debe contener una sentencia de léxico SQL

Indica con .T. si carga los datos. Por defecto su valor es .T.

Ejemplo:

oCursor:=OpenTable(SELECT TAB_NUMERO,TAB_TABLE”+;
               “ FROM DPTABLAS ”+;
               “ ORDER BY TAB_NUMERO”,.t.)
   oCursor:Gotop()
   WHILE !oCursor:Eof()
     ? oCursor:TAB_NUMERO,oCursor:TAB_TABLE
      oCursor:DbSkip()
   ENDDO
   oCursor:End()

//EOF

Puede observar que la consulta puede ser manejada de manera similar a una tabla DBF abierta a través de funciones del RDD o mejor dicho abierta con: USE TABLA. Para mayor información consulte la clase TTABLE de este manual.

Funcionalidad para conexiones remotas, clase TTABLE y función DPMYSQLBD, Que permite realizar  transacciones para consultar, modificar y agregar registros en una base de datos ubicada en otro servidor. Requiere Binario 11/03/2015
// Conexión Remota
// #INCLUDE "DPXBASE.CH"
PROCE MAIN()
LOCAL oTable,oDb
LOCAL cUrl  :="dominio.com",;
      cIp   :=GetHostbyName(cUrl),;
      cLogin:="root",;
      cPass :="",;
      nPort :=3306,;
      cDb   :="database"

      oDb:=DPMYSQLBD(cDb,cIp,cLogin,cPass,nPort,lError,.F.)

      IF !ValType(oDb)="O"
        MensajeErr("No es posible conectar con BD"+cDb+" Servidor "+cUrl)
        RETURN .F.
      ENDIF

      oTable:=OpenTable("SELECT * FROM WHERE ",.T.,oDb,.F.,NIL,.F.)

      // Se puede utilizar oTable:AppendBlank(),oTable:Commit(oTable:cWhere)
      oTable:Browse()
      oTable:Commit()
      DPCLOSEMYSQL ()
RETURN NIL

//EOF