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> wrote 48 lines
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>