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)
-   -   Campo Automático (https://www.clubdelphi.com/foros/showthread.php?t=60782)

tcp_ip_es 14-10-2008 11:56:14

Campo Automático
 
Mi duda creo que es muy sencilla... quiero que un campo se complete automáticamente, es decir teniendo esta tabla

Id_producto nombre descripcion id_doc
1 cartera bla bla PRO1

Id_Producto es autonumerico, y quiero que cuando se inserte un producto con su nombre y descripcion el campo id_doc se rellene automáticamente de la siguiente manera : Literal + Id_Producto
en este caso el literal es PRO.

Se que se debería hacer con un trigger en la BD pero no se hacerlo (Trabajo con MySQL) asi que me gustaría saber hacerlo con Delphi. ¿en que evento de la tabla o tfield iría el seteo del campo???

--- como veis sigo siendo novato----

Lepe 14-10-2008 13:47:40

En delphi en el evento before Post, pero teniendo en cuenta que esté en modo inserción (para que solo se asigne una vez al crearse el registro, en las posteriores ediciones, que no se modifique)

Código Delphi [-]
if tabla.state = dsInsert then
   tablaId_doc.asstring := 'PROC'+ inttostr(idproducto);

Como bien dices, lo correcto sería en un trigger, el idproducto sería un generador y en el trigger sería before_Insert.

Saludos

tcp_ip_es 14-10-2008 16:40:01

eso ya lo había hecho y no funciona, el problema esta en que el idproducto es autoincremental, y no se le asigna número hasta después del post. Tambien lo he probado en el afterpost pero tengo que hacer un edit para meter el dato y después un post y esto generaría un bucle infinito :D Si mi dices como hacer un triger en MySQL lo intento :p de momento lo tengo solucionado lanzando un query con update del campo.... pero me gustaría dejarlo más fino....

Lepe 14-10-2008 22:29:49

No sé los componentes que usas ¿zeos? pero todos suelen tener una propiedad que dice cuando generarr el autoincremento, las opciones suelen ser usServer, usPost,usNewRecord, poniendolo en usnewRecord ya tienes disponible el autoincremento antes de guardar.

A ver si alguien puesto en MySql te echa un cable.

Saludos

tcp_ip_es 16-10-2008 07:49:35

Perdón por no haber contestado antes, he estado liado con otros temas ;). No utilizo componentes Zeos, utilizo ADO->MyODBC->MySQL. Y en los componentes ADO no tienen la propiedad que me comentas, lo único que he visto que se parezca es una propiedad en los Tfield que genero a partir del TADOtable que se llama AutoGenerateValue con tres posibles valores: arNone, arDefault, arAutoInc pero con eso no le dices que te genere el autoincremento antes o en el momento o posterior a la inserción de un registro... no se pensaba que esto era más fácil ....:D


La franja horaria es GMT +2. Ahora son las 23:27:59.

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