Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ver un campo añadido a tabla (https://www.clubdelphi.com/foros/showthread.php?t=88471)

bulc 10-06-2015 16:36:09

Ver un campo añadido a tabla
 
He aquí lo que me gustaría saber.
Resulta que añado un campo nuevo a una tabla. Lo hago desde la línea de comandos del firebird con: ALTER TABLEx ADD FIELDx VARCHAR() etc. Ya lo he hecho más veces. Pero el caso es que noto que en el despliegue de campos del DBGrid no aparece en nuevo campo a pesar de haberlo cargado en el Query y claro, tampoco aparece en el despliegue de campos del ClientDataSet.
La pregunta concreta es ésta:
¿Debo volver a cargar de nuevo los componentes: IBDatabase, Transaction, IBQuery, ClientDataSet partiendo de cero? O tal vez hay alguna manera de hacerlo... más ventajosa.
Esa era la consulta.
Gracias por vuestra ayuda.
bulc

ecfisa 10-06-2015 17:26:46

Hola bulc.
Cita:

Empezado por bulc (Mensaje 493123)
... Pero el caso es que noto que en el despliegue de campos del DBGrid no aparece en nuevo campo ...

Si queres que el cambio se refleje en tiempo de ejecución
Código Delphi [-]
...
begin
  IBTransaction1.Commit;
  IBTransaction1.StartTransaction;
  ClientDataSet1.Close;
  ClientDataSet1.Open;
end;
Siempre y cuando hayas usado
Código SQL [-]
SELECT * ...
De otro modo debes agregar el nuevo campo al SELECT de la consulta SQL en el IBQuery.

Saludos :)

RONPABLO 10-06-2015 17:59:58

no recuerdo bien si esto en los clientDataSet estaba o no, pero en los IbDataset si que había que modificar el contenido del componente ya que internamente tiene un Insert, un Update y un refresh query que se generan automáticamente (en muchos caso, en otros mucha gente los crea manualmente) con la información inicial de la tabla y al agregar campos nuevos estos no se ven reflejados en los querys de insert, refresh y update aunque en el el query de select tenga un "select * from tabla"

ecfisa 10-06-2015 18:27:30

Hola RONPABLO.

Es correcta tu observación.

Con los TIBDataSet hay que entrar al DataSet editor (o a mano) y volver a generar las sentencias SQL para que se actualizen las propiedades DeleteSQL, InsertSQL, ModifySQL y RefreshSQL, de otro modo no se incluye el nuevo campo en las acciones.
Lo mismo aplica para el TIBQuery si tuviera asociado un TIBUpdateSQL, en este caso la actualización se hace sobre este último componente.

Saludos :)

bulc 10-06-2015 21:35:39

Me pongo a ello.
 
Lo probaré y muchas gracias por vuestra ayuda.
bulc

bulc 11-06-2015 09:24:16

Ha funcionado a la perfección
 
Hola ecfisa:
He añadido las cuatro líneas y me ha funcionado perfectamente. ¿Se pueden quitar una vez usadas una vez?
Gracias por tu valiosa ayuda.
bulc

ecfisa 19-06-2015 01:35:55

Hola bulc.

Disculpas por la demora, no había visto tu consulta :o.

Por supuesto que las puedes quitar si no necesitas mas de ellas, pero lógicamente, luego no dispondrás de su funcionalidad.

Saludos :)


La franja horaria es GMT +2. Ahora son las 15:14:35.

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