[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