Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   no puedo controlar las inserciones en Paradox (https://www.clubdelphi.com/foros/showthread.php?t=38194)

TrUnkS 06-12-2006 08:12:22

no puedo controlar las inserciones en Paradox
 
Hola amigos. Tengo un problema que nunca me habia pasado antes con este tipo de tablas. Trabajo con Delphi 7. Cada registro que guarda en la tabla se posiciona en un lugar de acuerdo al orden alfabetico del resto de los indices, es decir, si ingreso las claves 5, 8 , 7 , 1 en este mismo orden en la tabla queda como 1,5,7,8. Y si ingreso por ejemplo SER003, SER001, SER002, en la tabla queda como SER001, SER002, SER003. Entonces no puedo navegar correctamente por los registros. Utilizo el método Append el cual me permite crear un registro nuevo al final de la tabla pero igual me inserta los indices en una posicion inadecuada. Quizás todo este bien configurado pero tiene que haber algo que al final me ordena los indices alfabéticamente, si alguien pudiera ayudarme le estaria agradecido, de antemano gracias.

poliburro 08-12-2006 23:38:20

Sería de grran ayuda que incluyeras el DDL de tu tabla para ver que índice te está pegando.

Suerte

fedelphi 09-12-2006 14:55:30

No entiendo bien, a ver si es cierto Trunks como lo interprete, insertas claves del los tipos como dijiste anteriormente? o sea numeros y alfanumaericas? si es asi debes tener definido un indice alfanumerico. Seria bueno tener un poco mas de detalles si no es como lo interprete. Suerte
Fede

nemesio 10-12-2006 14:59:50

Hola

Si creaste un Indice del código que estás usando, de seguro que siempre te lo va a ordenar por código. Si no estas usando Indice, puede ser debido al Grid que estas usando, algunos grid como los de DEvelopers Express, ordenan los datos por las columnas a menos que le configures lo contrario.

Saludos

TrUnkS 12-12-2006 21:48:06

Hola. Estuve revisando mas informacón al respecto y nemesio tiene razón. Cuando creamos una tabla Paradox con un indice primario de tipo Alfanumérico, a medida que le vamos ingresando datos, los registros se ordenan de acuerdo al primer caracter de la clave primaria ingresada, si son iguales compara el segundo caracter de menor a mayor. Mi problema es que a mi no me interesa que los ordene por orden ascendente o descendente, lo único que quiero es que me los ordene del mas antiguo al mas nuevo, esto por efectos de navegación en mi aplicación. Por ejemplo si insertamos los registros con las claves 5,3,7,2 en el Database Desktop los veremos en el orden 2,3,5,7, o sea de menor a mayor. No puedo hacer para que me los deje en el mismo orden que los ingrese. Me constituye un problema porque al navegar por los registros con un DBNavegator no aparecen en el orden que los ingrese. Me da la impresión de que Paradox funciona asi y no hay forma de arreglarlo, pero cualquier sugerencia se agradece

Paoti 12-12-2006 22:45:52

di quiers ue te los repsente en el orden en que los vas ingresando, porque no pruebas a creear un campo extra, que va a ser autonumerico, y los ordeneas por ese campo,

Lepe 13-12-2006 12:11:13

Normalmente la clave primaria no se suele poner un dato significativo en la aplicación, es decir, no usemos el nº de factura como clave primaria, esto nos puede acarrear muchos problemas (por ejemplo al cambiar el modo de numeración de las facturas, que implicaría cambios sustanciales en la base de datos).

Como alternativa a tu duda, puedes crear un índice secundario sobre ... por ejemplo un campo fecha, o como ya han dicho un autoincremento, así al especificar en la propiedad IndexFieldName el nombre de este nuevo campo, se usará una ordenación distinta de la clave primaria.

Saludos

Paoti 13-12-2006 17:18:18

Estoy totalmente de acuerdo con Lepe.


añadiendo lo que comenta, em agunas corporaciones y empresas y para mayor estabilidad en el software.


Es requerimiento que en el modelo de datos de la aplicacion, sea cual sea su motor de base de datos, no estan permitidos los campos autoincrementos, la primary key del campo debe estar formada por datos de la tabla, y casi siempre es usada por campos unicos y una fecha que en su totalidad forman la llave primaria.


para ti trunks, agregando un campo autonumerico a tu tabla de paradox, creo que bastara para ordenar por ese campo y tus registros tendran el orden en que los vayas introducioendo

TrUnkS 14-12-2006 06:12:25

Concuerdo con Paoti en su declaración referente a la teoria de base de datos. Si bien sabemos que en lo posible no deben haber campos autoincrementables, mucho nos sirve a la hora de solucionar problemas como este. De hecho ya me di cuenta que Paradox ordena sus indices primarios de acuerdo a un orden ascendente o descendente, pero no he podido encontrar la forma en que la ordene de la mas antigua a la mas actual, a no ser que se haga un indice secundario, pero es lo mismo porque lo ordena de acuerdo a este indice secundario. Referente al comentario de Lepe no creo que hayan problemas en dejar como clave primaria el numero de factura, ya que (a nivel de legalidad) las facturas no se eliminan ni se modifican, mi opinión es ingresar la factura a la base de datos cuando se haya cancelado, y para eso el usuario debe tener un botón que activa el ingreso de la factura luego que el usuario haya confirmado la veracidad de los datos y la cancelación de la factura. Veo que la unica forma de poder solucionar esto es con InterBase, de hecho ya he solucionado el problema utilizando componentes IBTable y IBDataSet de InterBase :rolleyes:

Lepe 14-12-2006 12:37:24

Hombre, si hablo es por experiencia. Inicialmente hice un sistema con numeración de facturas 00001/2006 (número factura / año), después el sistema se modificó para permitir facturar con múltiples empresas, necesitando 01-00001/2006 (nº empresa- numero factura / año) ya, no es algo frecuente, pero si tuve que remodelar la base de datos, además de su clave primaria y de camino creé 2 campos IdMaestro (para la factura) e IdDetalle (para las lineas de la factura) de modo que no necesitara el nº de factura para esa relación.

Además al poner en producción el sistema, normalmente te piden que empiece en tal o cual número de factura, que es muy normal, si lo tienes como clave primaria, debes modificar el autoincremento (hablamos de paradox).

También coincido en que una factura no pueda borrarse, pero algunos usuarios crean la factura y después quieren borrarla "como si no hubiera pasado nada" (porque se equivocó al hacer clic).


Saludos


La franja horaria es GMT +2. Ahora son las 02:29:44.

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