Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2004
Avatar de JefeNet
JefeNet JefeNet is offline
Miembro
 
Registrado: ago 2004
Posts: 111
Poder: 20
JefeNet Va por buen camino
Ayuda con los indices de una tabla paradox

hola, hice una aplicacion en delphi y uso tablas paradox mi problema es el siguiente, al ejecuar el programa el revisa si la tabla existe y si no existe la crea pero... como estoy utilizando componentes TTable en la propiedad IndexDefs del componente tTable especifico el indice principal y los indices secundarios. Se supone que si llamo a createtable el me deberia crear la tabla y sus indices o me equivoco?

Si en el componente table no defino indices primarios ni secundarios el me crea la tabla sin problema, pero si defino los indices no me crea la tabla y me da error. alguien me puede ayudar?

este es el codigo
Código:
 
  if not Materia.Exists then Materia.CreateTable;
y los indices ya estan definidos en las propiedades de componente TTable.
auxilio
Responder Con Cita
  #2  
Antiguo 23-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Muéstranos el código completo que usas y dinos cuál es el error que te da.

// Saludos
Responder Con Cita
  #3  
Antiguo 24-10-2004
Avatar de JefeNet
JefeNet JefeNet is offline
Miembro
 
Registrado: ago 2004
Posts: 111
Poder: 20
JefeNet Va por buen camino
lo que quiero es que si la tabla no existe entonces la cree, pero son varias tablas maestro detalles.

explico: La tabla alumno es maestro y las demas son detalles, si la tabla alumno no existe entonces el la debe crear, pero lo que hace es crearmela pero sin indices ves? osea crea la tabla y las fields pero no me crea el indice principal ni varios secundarios y eso es con todas las tablas solo crea los fields de cada una pero claro sin indices y asi no las puedo vincular.

espero que me entiendan y me ayuden.
esto es lo que hago al ejecutar la aplicacion
Código:
  
  addalias('JNT',directorio+'\Base de Dato');
  if not Alumnos.Exists then Alumnos.CreateTable;
  if not AlumRep.Exists then AlumRep.CreateTable;
  if not Representantes.Exists then Representantes.CreateTable;
  if not ayuda.Exists then ayuda.CreateTable;
  if not Materia.Exists then Materia.CreateTable;
  if not Area.Exists then Area.CreateTable;
  if not ActGrup.Exists then ActGrup.CreateTable;
  if not Ficha.Exists then Ficha.CreateTable;
  if not Enfermedad.Exists then Enfermedad.CreateTable;
  if not Social.Exists then Social.CreateTable;
  if not Regular.Exists then Regular.CreateTable;
  if not Coros.Exists then Coros.CreateTable;
  if not Profesores.Exists then Profesores.CreateTable;
donde JNT es el alias de las tablas. si las tablas no existen me las crea no se si se haga asi. yo us componentes TTAble de la paleta BDE. ya tengo mi aplicacion lista solo me falta eso. gracias por su tiempo
Responder Con Cita
  #4  
Antiguo 24-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por JefeNet
y los indices ya estan definidos en las propiedades de componente TTable.
Disculpa, pensé que estabas añadiendo los campos e índices por código pero ahora me percato de que lo estás haciendo en el inspector de objetos.

De cualquier forma aún no nos dices cuál es el error que te presenta cuando incluyes los índices.

Haciendo algunas pruebas veo que hay algunos puntos a tener en cuenta:

1. Debe haber un índice primario
2. El índice primario no debe tener nombre
3. Si un índice secundario consta de un sólo campo y no modificas ninguna propiedad (ixCaseInsensitive, ixDescending, etc), el nombre del índice debe coincidir con el nombre del campo.

Quizá lo más seguro es que crees las tablas con el database desktop. Después asocias las componentes Tables al alias y el TableName y activas la tabla (en modo de diseño). Con esto aparecerán los FieldDefs e IndexDefs correctos. Por último pones en true la propiedad StoreDefs de la componente Table. Esto último sirve para que guarde las definiciones en el archivo dfm de manera que aun cuando la tabla física no exista las definiciones se preserven.

// Saludos
Responder Con Cita
  #5  
Antiguo 24-10-2004
Avatar de JefeNet
JefeNet JefeNet is offline
Miembro
 
Registrado: ago 2004
Posts: 111
Poder: 20
JefeNet Va por buen camino
al parecer todo va bien, estoy probando muchas gracias (por ahora ), ya me creó el indice principal y 2 secundarios voy a seguir y luego informo que paso
Responder Con Cita
  #6  
Antiguo 24-10-2004
Avatar de JefeNet
JefeNet JefeNet is offline
Miembro
 
Registrado: ago 2004
Posts: 111
Poder: 20
JefeNet Va por buen camino
al parecer todo esta bien menos una tabla que no se por que no la crea bien da un error (Number is out of range table does exist) no se por que, las propiedades son las mismas que la de las otras tablas, lo unico diferente es que esta tabla (AlumRep) me vincula la tabla Alumno con la Tabla representantes me explico

en la tabla AlumRep se cuarda el codigo del alumno y la cedula de su representante osea que AlumRep tiene dos indices primarios Codigo Y cedula. sera por esto??

seria algo asi

Alumno(Codigo)----->AlumRep(Codigo+Cedula)--->Representante (cedula)

sera que como tiene dos key me da error? hice lo que me dijiste y ahora me crea todos los indices de las tablas(primarios y secundarios) pero on esta tabla no he podido solucionar el problemita . sigo esperando instrucciones. muchas gracias por tu tiempo
Responder Con Cita
  #7  
Antiguo 25-10-2004
Avatar de JefeNet
JefeNet JefeNet is offline
Miembro
 
Registrado: ago 2004
Posts: 111
Poder: 20
JefeNet Va por buen camino
Hola de nuevo he estado revisando cuidadosamente y ya creo que se cual es el problema. El problema es que en las tablas donde hay 2 keys solo me crea 1, no se donde decirle o vincular los 2 keys. por ejem una tabla donde codigo y nombre sean keys con el database Desktop yo creo 2 keys y todo funciona pero si la tabla no existe y la quiero crear asi como explico anteriormente, solo me crea 1 key y el otro no y por ende me da errores. en donde especifico en las propiedades de los TTable los keys que utilizo?? gracias
Responder Con Cita
  #8  
Antiguo 25-10-2004
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
Realmente solo puedes crear una "key", clave primaria, cuando creas más de una en realidad lo que estas haciendo es crear una clave compuesta de varios campos.

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 25-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Añadir a lo que comenta marcoszorrilla que cuando la clave primaria está formada por varios campos, éstos deben ser los primeros en la lista de campos.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 11:40:12.


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