Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-05-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
No puedo crear Indice Secundario

Hola, compañeros.
Os agradecería un poco de ayuda.
Estoy intentando crear un índice secundario en una Tabla, para utilizar el método Table.SetRange([fecha1], [fecha2]);

Bien. Tengo una tabla detail con un campo "Fech"

En el Object Inspector, selecciono la propiedad "IndexDefs". Ya existe un índice primario. Pulso en el boton Add New, se abre el selector de propiedades, le pongo un nombre, selecciono el campo "Fech" y lo cierro.

Vuelvo a las propiedades de la tabla, pulso en la propiedad "IndexName" y no me aparece en el desplegable.

Vuelvo a "IndexDefs" y, para mi sorpresa, ha desaparecido el nuevo índice creado.

Lo he intentado varias veces y siempre igual. He mirado en el fichero .dfm y aparece el índice. Pero cuando vuelvo de nuevo, ya lo ha quitado.

Queda claro que no soy nada experto en tablas, pero esto me sobrepasa en mucho.

Si alguien puede echarme una mano... GRACIAS.
Responder Con Cita
  #2  
Antiguo 09-05-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Dinos que tipo de tablas estás utilizando, para poderte ayudar y con que utilidad estás creando el índice.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 09-05-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Bien, gracias Marcos.
Las tablas son Paradox y la utilidad es el IDE de Delphi7.
El índice primario que tengo creado, ya incluye el campo "Fech" con la hora y el número de cliente.
Un Saludo.
Responder Con Cita
  #4  
Antiguo 09-05-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
¿No usas el database desktop?
Responder Con Cita
  #5  
Antiguo 09-05-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Si, Newtron. Es fácil crear aquí el índice Secundario.

Pero si no tengo entendido mal, esto sirve para una tabla ya creada.

Lo que yo pretendo es crear la tabla con sus índices desde el propio programa. No se si me explico, porque no comprendo muy bien el funcionamiento de las tablas, todavía.

Gracias por tu sugerencia.
Responder Con Cita
  #6  
Antiguo 09-05-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por jhonalone Ver Mensaje
...esto sirve para una tabla ya creada.
Negativo, con el database desktop puedes crear o modificar tablas ya creadas, de todas formas lo ideal es hacer tú mismo la gestión de tus tablas desde la aplicación.

Te he preparado un ejemplo de como se crea una tabla con un índice primario y otro secundario, espero que te sirva.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
with TTable.create(self) do
begin
  DatabaseName := 'C:\TEMP';
  TableName := 'Clientes';
  TableType := ttParadox;
  with FieldDefs do begin
    Add('CODIGO', ftInteger, 0, True);
    Add('FECHA1', ftDate, 0, False);
    Add('FECHA2', ftDate, 0, False);
  end;
  IndexDefs.Add('Primario','ID', [ixPrimary, ixUnique]);
  IndexDefs.Add('Secundario','FECHA1;FECHA2', []);
  CreateTable;
end;

Recuerda que tienes que añadir al "uses" del formulario las unidades "dbtables" y "db".

Saludos
Responder Con Cita
  #7  
Antiguo 09-05-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias Newtron por tu esfuerzo y tu interés en ayudarme.

La idea es buena y te lo agradezco.

Ten en cuenta, que ya tengo dos TTable declaradas en la fase de diseño, con sus respectivos TDatabase, con sus respectivos campos e índices definidos, conectadas Master/Detail y con varias instrucciones y acciones sobre ellas distribuídas en varios formularios.

El programa comienza con un sencillo:

Código Delphi [-]
     
     if not FileExists('Clien2.DB') // si no está la base2
     then begin  // Creamos todas 
          Fclien.database1.Session.NetFileDir:=DirActual;
          FClien.ActosDB.DatabaseName:=DirActual;
          FClien.ActosDB.CreateTable;
          FClien.ClienDB.DatabaseName:=DirActual;
          FClien.ClienDB.CreateTable;
          end;


Comprende que hacer manualmente la definición de las bases es lo último que desearía tener que hacer.
¡Con lo sencillo que sería que el IDE me aceptara la definición del nuevo índice...!

Si no tengo más remedio tendré que utilizar el recurso que me aconsejas, pero entenderás que primero tengo que agotar los caminos más sencillos.

Gracias, de todos modos.
Un Saludo.
Responder Con Cita
  #8  
Antiguo 09-05-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Bueno, con tablas Paradox, a parte del código que ya te indican lo más sencillo es utilizar el DataBaseDesktop, abres la tabla le añades el índice secundario y arreglado.

Nota:Es obligatorio tener uno primario.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 10-05-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias por tu ayuda e interés, Marcos.

Acabo de conseguir crear la tabla con sus dos indices, el primario, (que bien dices es obligatorio), y el secundario con la fecha.

Probando y probando, se me ocurrió borrar la tabla anterior y el PDOXUSRS.NET y creo que este es el motivo por el que me ha dejado crear el índice en el Object Inspector en la pestaña correspondiente a la propiedad IndexDefs.

Lo dejo aquí por si alguien tuviera el mismo problema que yo.

Saludos.
Responder Con Cita
  #10  
Antiguo 11-12-2011
Micho Takura Micho Takura is offline
Registrado
NULL
 
Registrado: may 2011
Posts: 2
Poder: 0
Micho Takura Va por buen camino
Tampoco

Lamento malanoticiar que borrar el PDOXUSRS.NET no es la solución, al menos para mi caso, pero vale la pena internarlo. El asunto es que tampoco funciona con las tablas de ejemplo que trae Delphi (DBDemo), por lo que puede ser:
  • Uso el Windows bajo un usuario sin derechos de administración.
  • Una incorrecta instalación del Delphi.

Si alguien sabe por qué no se puede crear un índice secundario en una tabla Paradox, agradecería la ayuda.
Responder Con Cita
  #11  
Antiguo 31-12-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola Micho.

¿Has probado a borrar las dos cosas: el PDOXUSRS.NET y todos los ficheros de la tabla que tienes en el disco? " MiTabla.* " (Aunque estén vacíos) y crear los índices antes de crear la tabla.

Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Update índice secundario con ADOQuery miquellg SQL 1 09-04-2006 18:30:15
como puedo generar un indice en paradox mrmago Conexión con bases de datos 4 13-01-2006 23:19:54
Crear Indice no primario vtdeleon Conexión con bases de datos 2 06-09-2004 00:33:46
No puedo crear un índice FULLTEXT... vivim82 MySQL 1 26-05-2004 15:47:20
Indice Secundario en Firebird barrauda Conexión con bases de datos 4 01-02-2004 13:38:32


La franja horaria es GMT +2. Ahora son las 19:01:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi