Page 1 of 1

Existe Algun Libreria o RDD para Paradox

PostPosted: Sat Oct 25, 2014 1:39 am
by ruben Dario
Saludos Al Fórum, Existe Algina Librería o RDD para manejar base de datos Paradox. O Alquien Tiene algún ejemplo que funcione,

Gracias

Re: Existe Algun Libreria o RDD para Paradox

PostPosted: Sun Oct 26, 2014 10:52 pm
by Antonio Linares

Re: Existe Algun Libreria o RDD para Paradox

PostPosted: Mon Oct 27, 2014 12:56 am
by ruben Dario
Gracias, Antonio, Voy a revisarlo.

Antonio he Intentado con ADO, me hace la conexión , pero al Abrir la tabla me genera error, Ya que necesito hacer una actualización ha unas tablas en tablas paradox.

Gracias

Re: Existe Algun Libreria o RDD para Paradox

PostPosted: Mon Oct 27, 2014 7:35 am
by Antonio Linares
Ruben,

Has buscado en google el error que te aparece ?

Re: Existe Algun Libreria o RDD para Paradox

PostPosted: Wed Oct 29, 2014 11:05 pm
by ruben Dario
Gracias. Lineares, Lo que tu decías el DBE de Borland,

Parece que el driver que tiene Windows no Funciona o esta desactualizado, lo solucione de esta manera.

Baje en Runtain de Paradox Versión 11. Lo instale , hay viene el DBE , ya con esto ya me funciona desde mi programa manejando ADO.

Según veo este DBE , tiene los Driver de Paradox.

Gracias

Re: Existe Algun Libreria o RDD para Paradox

PostPosted: Thu Oct 30, 2014 6:43 am
by Antonio Linares
Muy bien :-)

Re: Existe Algun Libreria o RDD para Paradox

PostPosted: Fri Feb 26, 2016 8:14 am
by Joaquim Ferrer
Aunque ha pasado el tiempo y puede que hayais solucionado el tema, dejo mi experiencia.
Así ampliar la base de conocimiento por si alguien algun dia tiene que volver a 'lidiar' con esto.

He realizado, lo siguiente

1) Crear origen de datos, llamando a Odbcad32.exe
2) Crear un fichero vacio, con extension UDL (gracias @TheFull) y vincularlo al origen de datos anterior
3) Ejecutar el siguiente test, es importante en la SELECT hacer referencia a la tabla con extension .db

Saludos

Code: Select all  Expand view
/*
 * v.1.0 23-02-2016
 * (c)2016 Joaquim Ferrer <quim_ferrer@yahoo.es>
 * Programa:
 * Acceso a tablas Paradox > 5.x mediante FW ADO
 * Recursos:
 * Obtener cadena de conexión
 * https://www.connectionstrings.com/
 * Visores y utilidades Paradox
 * http://www.mitec.cz/Data/XML/data_downloads.xml
 * http://www.sportamok.com/development/do ... -setup.exe
 */


#include "fivewin.ch"

function main()
 
    // Antiguo driver CA-Clipper, sirve hasta Paradox 3.x
    // No se ha migrado a Harbour
    //REQUEST DBPX
    //USE familia INDEX familia VIA "DBPX"

    local cProvider, cDataSource, cString, cSelect, cBuffer
    local oServer, oRecord

    /* Paradox database */
    cProvider   := "Microsoft.Jet.OLEDB.4.0"
    cDataSource := "db"
    cProperties := "Paradox 5.x"
    cString := "Provider="+ cProvider +';'
    cString += "Data Source="+ cDataSource +';'
    cString += "Extended Properties="+ cProperties

    /* Connection */
        oServer:= CreateObject( "ADODB.Connection" )
    oServer:CommandTimeOut := 0

    TRY
        oServer:Open( cString )
    CATCH oError
        ? oError:Description, "No es posible abrir una conexión global con "+ cDataSource
    return .F.
    END

    oRecord:= CreateObject( "ADODB.Recordset" )
    oRecord:CacheSize       := 50
    oRecord:CursorLocation  := 3 //adUseClient
    oRecord:CursorType      := 2 //adOpenStatic
    oRecord:LockType        := 3 //adLockOptimist

    cSelect  := 'SELECT * FROM idiomas.db'

    TRY
        oRecord:Open( cSelect, oServer )
    CATCH oError
        ? oError:Operation, oError:Description, cSelect
        return .F.
    END

    /*
        Estructura
        adVarWChar 202 Indicates a null-terminated Unicode character string.
        adVarNumeric 139 Indicates a numeric value.
    */

    cBuffer :=""
    for i:= 1 to oRecord:Fields:Count
        cBuffer += oRecord:Fields:item(i-1):Name
        cBuffer += cValToChar(oRecord:Fields:item(i-1):Type)
        cBuffer += cValToChar(oRecord:Fields:item(i-1):DefinedSize)
    next
    ? cBuffer

    ? "RecordCount", oRecord:RecordCount

    /* Registros */
    cBuffer :=""
    do while !oRecord:Eof()
        cBuffer += oRecord:fields("NOMBRE"):value + CRLF
        oRecord:MoveNext()
    enddo
    oRecord:Close()
    oServer:Close()

    ? cBuffer

return .T.

//---------------------------------------------------------------------------------------------------------//