Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Campo de tabla con lista de datos (https://www.clubdelphi.com/foros/showthread.php?t=81395)

kornamenta 09-11-2012 22:11:48

Campo de tabla con lista de datos
 
Hola quería saber si es posible crear una tabla la cual contenga un campo que pueda almacenar una lista de datos. Esto es para un programa que debo hacer en el cual se tengan los datos de un automotor: Nº de patente, Marca, Modelo y Modificaciones. Precisamente necesito que para este último campo Modificaciones se pueda ir editando a medida que se le realiza actualizaciones. Ejemplo:

QWE-123 - Fiat - 600 - Cambio de neumáticos
Chapa y pintura
Cambio de amortigüadores

Espero que se entienda lo que necesito. Que por ejemplo al ingresar el Nº de patente salgan los datos de la tabla y de alguna forma la lista de modificaciones. Espero que alguien sepa como hacerlo muchas gracias

nlsgarcia 09-11-2012 23:31:35

kornamenta,

Cita:

Empezado por kornamenta (Mensaje 449120)
Hola quería saber si es posible crear una tabla la cual contenga un campo que pueda almacenar una lista de datos.

Revisa este link:
En el encontraras un ejemplo descargable de como gestionar una variable tipo Record en un campo Blob de una BD.

Espero sea útil :)

Nelson.

kornamenta 11-11-2012 03:26:35

Hola, muchas gracias por el link. Sinceramente no entendí muy bien si pudieran explicármelo mas claramente se los agradecería, tengo conocimientos básicos en delphi..gracias de antemano.

roman 12-11-2012 17:27:36

Cita:

Empezado por kornamenta (Mensaje 449120)
Hola quería saber si es posible crear una tabla la cual contenga un campo que pueda almacenar una lista de datos. Esto es para un programa que debo hacer en el cual se tengan los datos de un automotor: Nº de patente, Marca, Modelo y Modificaciones. Precisamente necesito que para este último campo Modificaciones se pueda ir editando a medida que se le realiza actualizaciones. Ejemplo:

QWE-123 - Fiat - 600 - Cambio de neumáticos
Chapa y pintura
Cambio de amortigüadores

Espero que se entienda lo que necesito. Que por ejemplo al ingresar el Nº de patente salgan los datos de la tabla y de alguna forma la lista de modificaciones. Espero que alguien sepa como hacerlo muchas gracias

Tener un campo que almacene una lista de valores es un mal diseño en una base de datos. Lo que debes hacer es introducir una segunda tabla que almacene los cambios con una llave foránea que punte la primera tabla.

Por ejemplo, tu primera tabla podría tener estos campos:

automotor = (id, noPatente, marca, modelo) # id sería la llave primaria, un valor numérico autoincremental

y la segunda quedaría así:

cambios = (id, automotorId, cambio) # id llave primaria, automotorId llave foránea

Entonces, para el ejemplo que pones, tendrías un registro en la tabla automotor:

(354, "QWE-123", "Fiat", "600")

y tres registros en la tabla cambios (uno por cada cambio en el automotor correspondiente):

(574, 354, "Cambio de neumáticos")
(575, 354, "Chapa y pintura")
(576, 354, "Cambio de amortiguadores")

Los números de los IDs son inventados, pero lo importante es que el segundo campo de cambios (354 en el ejemplo) hace referencia a la llave primaria en automotor.

Cuando quieras recuperar la información simplemente haces una consulta SQL especificando el ID del automotor:

Código SQL [-]
select * from cambios
where automotorId = 354

// Saludos

kornamenta 12-11-2012 19:17:28

Mil gracias roma!!! era eso lo que tenía pensado, ahora una duda:
si por ejem,plo ingreso un nuevo automotor en la primer tabla Ejemplo:
(354, "QWE-123", "Fiat", "600")
(355, "GDD-742", "Renault", "12")

En la segunda tabla podria quedar tranquilamente guardado así cierto?:
(574, 354, "Cambio de neumáticos")
(575, 354, "Chapa y pintura")
(576, 354, "Cambio de amortiguadores")
(577, 355, "Calibrado de frenos")
(578, 355, "Chapa y pintura")

Mi idea seria que al hacer click por ejemplo en un botón "Mostrar". En un DBMemo aparecieran todas las actualizaciones de un ingreso y al seleccionar otro ingreso salieran las actualizaciones del otro y así sucesivamente.

Voy a probar pero muchas gracias por responderme cualquier cosa te enviare un MP si no es molestia.

roman 12-11-2012 19:25:58

Más que un DBMemo, te conviene usar dos dbgrid. Uno para la tabla automotor y otro para la tabla cambios. Los dataset que alimente a estos debgrids los enlazas mediante una relación maestro-detalle para que el segundo se actualice automáticamente conforme te desplazas por el primero.

Si tienes más dudas, ponlas aquí, no por mensajes privados.

// Saludos

kornamenta 12-11-2012 20:51:55

2 Archivos Adjunto(s)
Esto de no programar en delphi un par de años me dejó tonto!!!

Voy a precisar mas ayuda de la que creía, ya cree las dos tablas y establecí la relación maestro detalle pero sin embargo no me los relaciona, no se me actualiza en el segundo dbgrid. Perdón que pregunte tanto pero me olvide un montón

nlsgarcia 12-11-2012 21:06:48

kornamenta,

Puedes revisar estos libros:
Cita:

La Cara Oculta de Delphi 4 de Ian Marteens, disponible en este link : http://terawiki.clubdelphi.com/Delph...lphi_4.pdf.zip

Borland Delphi 6 Developer's Guide de Steve Teixeira y Xavier Pacheco.
En este link puedes encontrar una guía de BD en Delphi : http://delphi.about.com/od/database/...basecourse.htm

Para finalizar en el Club Delphi encontraras mucha información sobre el uso de BD, revisa este link: http://www.clubdelphi.com/foros/showthread.php?t=44763

Espero sea útil :)

Nelson.

kornamenta 14-11-2012 21:59:36

Hola de nuevo, aquí sigo con el programa, les comento que no me estoy complicando demasiado ya que me piden algo simple. He colocado las dos tablas relacionadas en un Form con los respectivos formularios de registros, es decir que se puedan ingresar los Automóviles(Patente, Marca y Modelo) y otro formulario donde se pueden ingresar las modificaciones según el automovil que se elija(ID autoincrementable, Patente y Modificación).

Bien ahora el problema es que me gustaría agregarles condiciones, es decir que al agregar una modificación si la patente ingresada no coincide con ninguna de la tabla1 (automóviles) salga un mensaje "Patente inválida" y si la encuentra pues que realice el registro correctamente.


Espero que puedan ayudarme, son cosas simples pero que a pesar de leer varias guías, vídeos y temas en este mismo foro no consigo adaptarlo a lo que quiero. Uso tablas Paradox y no quiero utilizar SQL ni nada de eso gracias.



Quiero avanzar este proyecto de a pasos por lo tanto una vez que me ayuden a solucionar esto tengo otras dos consultas que las dejaré mas adelante. Muchísimas gracias nuevamente.

P/D: Si necesitan ver como tengo el Form, los códigos, etc. me avisan y se los paso.

P/D2: Por cierto también me gustaría saber como colocar un mensaje personalizado en lugar del que viene por defecto cuando se ingresa un nuevo registro en la base de datos y este es clave primaria repetida


La franja horaria es GMT +2. Ahora son las 21:27: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