[Lazarus-es] archivos indexados

Claudio Romero clauslack en gmail.com
Mie Sep 13 16:20:34 CEST 2017


Hola yo use bastante para migrar bases Dbf a FirebirdSql.

Lo que mas usaba era leer el Dbf sin los indices, el componente TDbf es un
dataset mas. Bastante simple.

Para los indices el componente TDbf, que soporta los indices MDX (creo
dbase), no los IDX, ni CDX (foxpro, visual foxpro). El componente TDbf
quedo deprecated un tiempo, luego lo incorparon de nuevo, no se si le
agregaron el soporte para foxpro  CDX, creo que alguien estaba en eso.

De todas manera yo abria el DBF con lazarus y lo indexaba en MDX. De esta
manera no tocaba los CDX.

Aca un ejemplo

procedure IndexaDbf(TablaDbf,campo:string;OpcionesIndices:TIndexOptions);
var Dbf1:TDbf;
begin
    try
        Dbf1:=TDbf.Create(nil);
        dbf1.TableName:=TablaDbf;        Dbf1.Exclusive := True;
        SysUtils.DeleteFile(ExtraerExtension(TablaDbf)+'.mdx');//borra el
indice
           Dbf1.Open;
        try
            Dbf1.AddIndex(campo,campo,OpcionesIndices);
        except
            mensajeExcepcion('No pudo acceder, para indexar, en forma
exclusiva a '+TablaDbf+'; o campo clave incorrecto');
        end;
        Dbf1.Exclusive := false;    Dbf1.IndexName :=campo;
        Dbf1.readonly:=true;
    finally
        Dbf1.Close;    Dbf1.Free;
    end;
end;

Despues para buscar en el Dbf indexado, usaba
if Dbf1.SearchKey(SQLQuery1.FieldValues[campo_clave],stEqual,true) then ...

Lo use bastante en produccion en la migración. Y lo sigo usando para tomar
datos externos de tablas Dbf.

Aun asi no lo recomiendo al Dbf para programar bases de datos locales en
Lazarus. Si es algo local, es mejor Firebird Embebed, que despues se migrar
facilmente a un Firebird Sql.

Saludos


El 12 de septiembre de 2017, 22:22, Rafael Bidegain via Lazarus-es <
lazarus-es en lists.lazarus-ide.org> escribió:

> hola a todos.
>
> Estoy buscando una librería que me permita usar archivos indexados
> (indizados)
>
> No es una necesidad laboral, solamente quiero jugar un poco.
>
> Abrir un archivo en formato dbf y un archivo de indices asociado al
> archivo dbf es una opción pero estoy buscando algo que me permita trabajar
> con record de pascal.
>
> sql no es una opción que considere.
>
> Este es un ejemplo de archivo
>
> region,vendedor, producto, cantidad
> este,lucas,2,10
> este,veronica,3,10
> norte,juan,1,10
> norte,lucas,1,25
> oeste,juan,1,15
> oeste,maria,1,20
> sur,pedro,1,30
> sur,santiago, 1,30
>
> necesito un indice por region, otro por nombre, otro por producto
>
> para hacer cortes de control por region o vendedor o producto.
>
> desde ya muchas gracias.
>
>
>
> --
> Rafael Bidegain
>
> Ya que los cuerdos no hablan, hablará el loco.
> (The Fool, Padraic Pearse)
>
> # yo quiero educación libre. ¡YA!
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> https://lists.lazarus-ide.org/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170913/b6e6944c/attachment.html>


Más información sobre la lista de distribución Lazarus-es