XBase

De MasFoxPro Wiki

Tabla de contenidos

[editar] Compiladores de dialecto XBase

Buenas,

Probablemente entre las alternativas se puedan considerar:

[editar] Harbour

Compilador de código abierto que en 9 años aun no logra alcanzar la versión 1.0

[editar] xHarbour

Desprendimiento del proyecto Harbour pero esta vez saborizado comercialmente, que aun sigue en estado experimental y ronda la Beta que se considera final desde 2005 - Costo: USD 900.

[editar] (x)Harbour

Producto ampliado de Harbour (debido a un distanciamiento entre Patrick Mast y Antonio Linares, su impulsor principal) que intenta ser completo pero que en realidad está lleno de contribuciones de las cuales depende.

[editar] Xbase++

  • Novedades en Xbase++ 2.0 (proximo a salir)

http://www.alaska-software.com/products/product-outlook-2007-2008.pdf

  • Soporte de Tablas de datos FOX (todas sus versiones).
  • Soporte de tipo de datos DATETIME.
  • Acceso directo a PostgreSQL como si fuera una tabla nativa.
  • Stored procedures escritos en sintaxis xbase (quiere decir, genérica).
  • CXP - Compiled Xbase Pages. Páginas HTML generadas dinámicamente a partir de código xbase.
  • BOBI - Arquitectura orientada a Web Services con sesiones persistentes.
  • Hay más.


Xbase++ es la evolución del Clipper y muchísimo más. Hay OOP, Threads, COM (ActiveX, Automation), persistencia de TODOS los tipos de datos, usa tablas FOX de todos los sabores incluyendo sus índices, también pueden usarse Sockets, POP3, SMTP, HTTP, XML, SQL Server, etc. Puedes usar las DLL del Sistema Operativo, o las hechas con Delphi o C++, o crear las tuyas.

  • El preprocesador es super potente y te permite crear tus propios comandos.

También existe un API para el preprocesador y puedes crear tus propios programas interpretables en tiempo de ejecución. Puedes crear clases dinámicamente, enviarlas por internet y ejecutarlas en un equipo remoto. Cuando digo crear clases, significa que tambien puedes crear el objeto a partir de esa plantilla. Es decir, creas un formulario desde la nada (no estaba dentro del PRG), le pones controles, lo llenas y lo mandas con datos y todo a otra terminal. Allá lo cargas y ejecutas como si fuera nativo del programa que tiene el usuario. Eso es dificil de hacer con cualquiera de los demás dialectos. Hay muchas cosas para ver en ese producto.

El sitio no es muy bonito pero el compilador y sus utilidades funcionan muy bien. Soporta redes como Novell, Windows, Linux con Samba y varias más. Tiene un esquema de bloqueo automático de tablas que te evita hacer los Rlock() y Unlock() pues los hace él sólo. A diferencia de los demás dialectos, puede usar archivos de textos CSV con un índice, archivos SDF con indice CDX.

[editar] Ejemplos de Acceso a Datos

#include "Common.ch"
#include "Odbcdbe.ch"

   PROCEDURE DbeSys
      DbeLoad( "ODBCDBE" )
      DbeSetDefault( "ODBCDBE" )
   RETURN

   PROCEDURE Main
      LOCAL cConnect, oSession

      cConnect := "DBE=ODBCDBE"
      cConnect += ";DRIVER=SQL Server"
      cConnect += ";Server=(local)"
      cConnect += ";UID=sa"
      cConnect += ";PWD=password"
      cConnect += ";DATABASE=AdventureWorks"

      oSession := DacSession():new( cConnect )

      IF .NOT. oSession:isConnected()
         ? "No pude conectar al servidor!"
         ? oSession:getLastMessage()
         DO WHILE INKEY(1)==0
         ENDDO
         QUIT
      ENDIF

      USE "HumanResources.Employee"
      Browse()
      CLOSE ALL

      oSession:disconnect()
      DO WHILE INKEY(1)==0
      ENDDO
   RETURN
PROCEDURE Main
   LOCAL aDatos := { 5, 10, 15, 30, 50, 45, 20, 10, 2 }
   LOCAL oXL := CreateObject( "Excel.Application" )
   LOCAL oXLGrafico
   LOCAL nLen, cIndex, i

   oXl:visible := .T.
   oXL:WorkBooks:Add()

   nLen := LEN(aDatos)
   cIndex := ""
   FOR i:=1 TO nLen
      cIndex := LTRIM(STR(i))
      oXL:Workbooks(1):Sheets(1):Range("A"+cIndex):Value := aDatos[i]
   NEXT

   oXL:Workbooks(1):Sheets(1):Range("A1:A"+cIndex):Select
   oXLGrafico := oXL:Charts:Add()
   oXLGrafico:Type := xl3DColumn

   // No recibir avisos de sobreescritura de archivos.
   oXL:DisplayAlerts := .F.
   // Crear una copia de respaldo de la planilla activa:
   oXL:ActiveWorkbook:SaveCopyAs("C:\Work\ActiveX01\XlsChartBAK.xls")
   // Guardar la planilla actual.
   oXL:WorkBooks(1):SaveAs("C:\Work\ActiveX01\XlsChart.xls")

   oXL:Quit()         // Cerrar Excel
   oXL:destroy()      // Destruir la instancia
   oXL := NIL         // Liberar el contenido para el Colector de Basura

RETURN

Otermin


Es en mi opinión el más estable y de mayor crecimiento de los herederos de Clipper. Baste con mirar la lista de proveedores y socios de negocios:

Funcky, Roger Donnay, FiveTech, y varios más http://www.alaska-software.com

De todos los productos mencionados, sólo Flagship, C3 y Xbase++ son auténticos compiladores que producen código de máquina y no requieren del apoyo de una bolsa interminable de productos de terceros.

Espero haber ayudado.

Otermin


HernanCano

También me interesé por XBase hace algún tiempo; sé que tiene varios "puntos a favor". Lo que no me gustó es que su sintaxis es Clipper, y no deseo aprender otro lenguaje de programación.


Lo mejor que tiene el preprocesador de Xbase++ es que podes CREAR TUS PROPIOS COMANDOS al estilo Fox. Además tenés verdadera orientación a objeto. Si, estoy de acuerdo en que la caja no es bonita. Pero produce ejecutables que no pueden ser descompilados entre otras cosas. Otermin

[editar] DBASE

Buenos dias:

Hace un tiempo me topé con la web de dBase [1]

Que son los herederos del Dbase de Borland de toda la vida, Y resulta que tienen un completo IDE muy parecido al FOX. Incluso con la ventana de comandos y todo.

Es un perfecto RAD integrado, con diseñador de Formularios, Menús, Informes, BD, etc. etc. Y además genera auténticos Ejecutables.

Todo en un mismo producto como nuestro querido FOX. Vale la pena darle un vistazo

Un Saludo.

--ElektrodarK 03:58 23 mar 2007 (PDT)


Hum. Seria bueno saber si alguien lo ha probado para ver que tan rapido es. Porque generalmente el gran problema de los clones de xBase, a excepcion de nuestro querido Zorro, es que generan ejecutables inmensos y la velocidad de ejecucion del codigo deja mucho que desear.

VictorEspina 05:28 23 mar 2007 (PDT)


Excelente producto...!!! Lo mas parecido que existe a nuestro querido VISUAL FOX.

También lo he probado y su modo de operación es asombrosamente similar al zorro.

En las pruebas que hice con tablas (pruebas muy simples con tablas bastante grandes) no me pareció ver una diferencia sensible con VFP. Eso sí, no hice las pruebas con todo el "rigor científico" sino de manera muy empírica, y a simple vista no se pudo notar una diferencia con el rendimiento de VFP.

Claro que si me hubiera puesto a medir las "décimas de segundo" y otras pruebas con bloqueo de tablas en una LAN de seguro hubiera encontrado diferencias. El punto es que para el "usuario común" creo que no habría diferencia de rendimiento. Si no fuera porque solo corren en WINDOWS, sería mi primera herramienta de elección. ---


HernanCano M-03-Marzo-2007 00:30am

Deseo poner mi grano de arena, aunque no sea usuario de DBase.

Le aclaro a ElektrodarK que DBase no es clon, es el "original". Microsoft compró FoxPro, pues era el que mejor competencia (en cuanto a eficiencia, facilidades de programación) le hacía.

Creo que, si continúa con apoyo (por parte de Borland), puede ser nuestra elección.

Me adhiero a ElektrodarK y a VictorEspina, pues mencionan que lo han probado.


Bueno quiero agregar que estos señores de DBASE quieren adoptar a los futuros huerfanitos de VFP (saben que somos una comunidad muy grande y dinámica y que les vendría bien tenernos entre sus filas) y estan lanzando una oferta de su producto dBase Plus específicamente para nosotros usuarios de FoxPro por solo $99 dólares hasta fin de este mes de junio.(http://www.dbase.com/FoxProUpgrade.asp) lo único que piden es fotocopia de factura de Fox o simplemente fotocopia del CD o diskettes de instalación, esto quiere decir que hasta los que aun usan foxpro 2.6 y tienen los disquettes originales podran tener esta oferta, vaya que es una inversión mínima y yo no me pude resistir y ya hice el tramite de compra pues el valor de lista de la herramienta es de $879.

RodolfoArias 12-Junio-2007


Antes de considerarla, me gustaría saber del futuro de DBASE, se, del pasado pero y que del futuro, prometen un Dbase de 64bits? porque de "Futuro" es lo que estamos huérfanos!! no sea cosa de agarrar otro muerto.! Gracias.

[editar] Recital 9

Entre las alternativas XBASE que corren en windows y linux, tambien se olvidaron de incluir a recital 9, que incluye una herramienta para migración de proyectos hasta la versión 8.0 SP1, entre sus novedades pude ver :

Cross-platform Visual FoxPro 8.0 compatible SQL with local cursor engine including all SQLxxx() functions

Enhanced Visual FoxPro 8.0 language and function compatibility  
Backwards compatible with earlier versions of Recital, FoxPro 2.6, SCO FoxBASE, and Clipper 
ANSI SQL syntax compliant  
Navigational and SQL data access  
Active Data Dictionary  
Supports stored procedures, triggers and user-defined functions written in Recital, Visual FoxPro or any .NET language  
Broad cross-platform support; Windows, Linux, Unix, and OpenVMS  
Row level locking 
Low-level ISAM C API for high performance C/C++ embedded non-server database access  
ODBC compatible C API for C/C++ embedded non-server database access  
Full text indexing and searching  
Complete support for SQL subqueries  
Extensible using dynamically loadable C function and class libraries 
Flexible security system with column-level protection  
Extensible with our new C OBJECT API for building dynamically loadable class libraries in C/C++  
Trap hard to find bugs using the new ASSERT command  
Enhanced integrated XML language support providing Microsoft ADO.NET XML data import and export  
Enhanced built-in Client/Server capabilities with universal data access via open system gateways  
Now supports Visual FoxPro 8.0 database events including CHECK and ERROR  
Now supports MySQL extensions including CREATE/DROP/USE DATABASE and running .sql files  
Now supports Very Large Databases (tables larger than 2GB) up to 2^63 bytes  
Now supports joins across multiple databases using the database!table command syntax  
Now supports nested transactions  
Now supports enhanced database security with built-in DES3 encryption  
Now supports 32-character field names  
Now supports 256 columns per table  
Now supports NULLs  
Now supports DateTime and Currency data types  
Now supports nested SQL SELECT statements  
Now supports SQL UNIONs  
Now supports structured error handling using TRY/CATCH/THROW...FINALLY  
Now supports Auto-Increment fields  
New native ODBC driver for Linux that works with PHP  Saludos


[editar] Otras Alternativas XBASE

Como no tenía muy claro donde ubicar esto lo pondré aqui... ya que (aunque no busco otro FoxPro si) me gustaría (creo que a todos nos gustaría) que una serie de funcionalidades estuviesen presentes en la nueva herramienta (las utilizaba en FOX y me "alegraban" mucho la vida):

  1. Generador de informes integrado, como lo voy a echar de menos :,(
  2. Clases y herencia
  3. Macros (de estas podría prescindir ya que la mayoría que utilizaba eran en sentencias SQL)
  4. FDU's en sentencias SQL
  5. Muy orientado al tratamiento de bases de datos (que en el fondo es a lo que yo me dedico)
  6. Aun siendo de alto nivel se podía (dios ya hablo en pasado del Fox) acceder a API's y DLL's (aunque de forma algo "por los pelos" que nadie se ofenda)
  7. Rapidez al programar.
  8. Rapidez tratando datos (propios y ajenos) ultimamente ya me había decantado por MySQL

Por otra parte no me importaría dejar a un lado ciertas características del FOX, como son:

  1. Su dependencia de las DLL's en los ejecutables y su "riesgo" de decompilación de exe
  2. Su ligazón a Microsoft y Windows
  3. Orientación a sistemas de bases de datos tipo SQL (vale que el FOX la tenía pero...)
  4. Buscar empleados con conocimientos de FoxPro era/es muy complicado

Una sugerencia: en mi caso y supongo que en el de muchos no me importaría (de hecho lo estoy haciendo) plantear la busqueda de una nueva herramienta desde el punto de vista del framework y no del compilador en si, me explico. Para mi sería muy apetecible la idea de empezar con una serie de herramientas que me facilitasen el olvidarme de ciertas cosas (como el interface y todos sus requisitos, aunque se que esto al 100% imposible) y me permitiesen centrarme más en la lógica de negocio.

Herramientas personales
interaction