[Lazarus-es] Crear índice secundario doble en una tabla DBase
Antonio Caballero Martínez
antonio.caballero.martinez en gmail.com
Mar Ago 11 12:42:10 CEST 2009
Hola a tod en s ...
Quizás sea una pregunta de principiante, o de novel; pero no consigo
encontrar información por ningún sitio ...
Utilizo el componente TDbf por defecto que incluye Lazarus (versión 0.9
si no recuerdo mal del componente; y versión Daily Snapshoot de no hace
muchos días).
Tengo una tabla DBase (*.dbf) sobre la que quiero crear un índice doble
secundario (es decir, un índice secundario basado en DOS campos de la
tabla). Para un índice basado en un solo campo, se tiene [sí, es lo
mismo que en el tutorial
http://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial]:
MyDbf.Exclusive := True;
MyDbf.Open;
MyDbf.AddIndex('custid', 'Id', [ixPrimary, ixUnique]);
MyDbf.AddIndex('custname','Name', [ixCaseInsensitive]);
MyDbf.Close;
En lo anterior, supongo que MyDbf es un TDbf1 con campos de nombre Id
(AutoInc), Name (String 80), y Surname (String 80) ...
En el código anterior, creamos un índice único y primario para el Id de
cliente; y análogamente uno secundario para el nombre.
Pero, supongamos que por requerimientos necesito tener separado el
nombre y los apellidos en diferentes campos; y por lo tanto mi pregunta es:
¿Cómo puedo crear por código un índice secundario basado en los campos
Name y Surname simultáneamente?
Para una posterior relación master-detail; puedo referirme a varios
campos de la tabla separando los 2 campos por un punto y coma. Es decir:
MyDbf.IndexName := 'IndiceDobleNombreyApellidos'; // este es el
índice secundario doble anterior ...
MyDbf.MasterSource := dsClientes;
MyDbf.MasterFields := 'Name;Surname';
El problema, conforme he dicho antes, es cómo crear en tiempo de
ejecución (por código), el índice basado en el nombre y los apellidos ..
¿Alguna sugerencia? ¿Alguna idea?
Muchas gracias de antemano a todos ...
More information about the Lazarus-es
mailing list