![]() |
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:
auxilio |
Muéstranos el código completo que usas y dinos cuál es el error que te da.
// Saludos |
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:
|
Cita:
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 |
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
|
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 :confused: . sigo esperando instrucciones. muchas gracias por tu tiempo |
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
|
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. |
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 |
La franja horaria es GMT +2. Ahora son las 09:35:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi