Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda para insertar más de 8 caracteres desde ComboBox (https://www.clubdelphi.com/foros/showthread.php?t=71078)

mkbro 28-11-2010 15:28:53

Ayuda para insertar más de 8 caracteres desde ComboBox
 
Hola,

Estoy creando un programa usando Delphi 2010 y firebird 2.5. En la base de datos tengo una columna con un check que es el siguiente:

Código SQL [-]
CONSTRAINT ch_Tip_Prestamo CHECK (Tip_Prestamo in ('DIARIO', 'SEMANAL', 'QUINCENAL', 'MENSUAL') )

Este campo lo inserto a través de un ComboBox (un TDBComboBox para ser exacto) el cual tiene las cuatro opciones anteriores, pero si selecciono la opción "QUINCENAL" me da un error porque reduce esta entrada a "QUINCENA", o sea 8 caracteres y de esa forma no cumple con el CHECK de la base de datos.

Me gustaría saber si hay alguna forma de solucionar este problema usando este mismo componente (combobox) y que me de los 9 caracteres que necesito.

Por cierto, hago la conección usando dbExpress, pero según puedo observar el problema se encuentra solamente en el combobox.

Gracias de antemano.

Casimiro Notevi 28-11-2010 16:10:53

¿Y el campo Tip_Prestamo de qué tipo es?

Estifmauin 28-11-2010 16:33:55

Hola mkbro.
No quiero poner en duda tus conocimientos, ni tu buen hacer, pero la única explicación lógica que encuentro a lo que cuentas es que la longitud del campo sea de 8 caracteres, por eso pierdes el último.
Si no es eso, tal vez debieras darnos algo más de información: estructura de la tabla...
Saludos.

mkbro 28-11-2010 16:41:49

Muchas gracias por tu atención.

Esta es la definición del campo:

Código SQL [-]
Tip_Prestamo varchar (9) not null,

Pero según he podido constatar el problema está en Delphi no en la base en sí, puesto que si hago desde el ISQL.exe de Firebird la siguiente inserción:

Código SQL [-]
INSERT INTO prestamos (Tip_Prestamo)
VALUES ('QUINCENAL');

Hace la inserción de manera normal y no me da ningún error. Y como ya escribí es el ComboBox que me corta los caracteres sobrantes a 8, porque después de arrojar el mensaje de error aparece cortada la palabra "QUINCENAL" a "QUINCENA".

Estifmauin 28-11-2010 17:11:04

¿Que mensaje de error te sale exactamente?

mkbro 28-11-2010 17:57:45

Les pido disculpas y les doy las gracias por sus respuestas.

He sido un tonto (y tienen permiso para llamarme de esa forma), ya he dado con el problema por mí mismo y si me hubiese explicado mejor desde el principio sé que me habrían podido ayudar rápidamente.

El asunto es que no me acordaba que cuando cree la tabla por primera vez le puse un tamaño de 8 caracteres al campo Tip_Prestamo y con esa definición cree inmediatamente los campos del formulario. Pero entonces me di cuenta que el tamaño que debía tener eran 9 caracteres y corregí la definición de ese campo inmediatamente en la tabla, pero ya el ClientDataSet tenía asignado como size 8 en ese campo. El asunto es que de eso hace ya algo de tiempo y por coincidencia (o estupidez) yo no había nunca seleccionado la opción quincenal en el TDBComboBox durante las pruebas hasta hace unas horas y fue ahí cuando me tropecé con el problema.

Tras ver que por el ISQL.exe los datos se introducían de manera correcta, y percatarme de que el TDBComboBox me cortaba lo que escribía todo lo que pensé es que el problema estaba justamente en éste, cuando en realidad estaba en el ClientDataSet, y resulta que el TDBComboBox no cuenta con la propiedad MaxLength mientras que el ComboBox normal si lo tiene, al igual que el TDBText conserva esta propiedad que posee el TEdit normal.

Bueno gracias a todos por su atención, y espero que se si me presenta algún otro problema saber explicarme mejor.

Estifmauin 28-11-2010 18:02:02

No te martirices...
Eso le puede pasar a cualquiera.
Como a mi tambien me paso varias veces algo parecido, hace tiempo que deje de trabajar con campos persistentes en mis datasets :)

Casimiro Notevi 28-11-2010 18:05:46

Solucionado :)


La franja horaria es GMT +2. Ahora son las 22:28:17.

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