Delphi - Agregar Campo

 
Vista:

Agregar Campo

Publicado por Luciano (4 intervenciones) el 13/11/2008 01:13:05
Buenas a todos, mi consulta reside en lo siguiente:

Tengo una tabla en MYsql, trabajo con Delphi 7 y los componentes ADO.
Para llamar dicha tabla al principio del programa ultilizo la forma estandar:
SELECT * FROM Tabla;
Y en el componente adoquery entro en el field editor y agrego todos los campos. El problema reside en que cuando necesito hacer unos procesos en el programa. Selecciono la tabla de la sig.forma.
SELECT * FROM Tabla LEFT JOIN Tabla1 On Tabla.Id=Tabla1.Id;
Hay alguna forma de agregar los campos por medio de codigo al editor de campos, asi puedo manipularlos para que me queda una onda asi: Dm.TablaNom.Value el campo Nom corresponde a la segunda tabla. Y despues de hacer el proceso. Necesito volver al estado de SELECT * FROM Tabla, y tener solamente los campos de esa tabla. Ya que si los agrego antes me da error porque esos campos no estan presentes hasta que hago el LEFT JOIN. Espero se entienda. Desde ya gracias.

Saludos, Luciano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Agregar Campo

Publicado por juancho (193 intervenciones) el 13/11/2008 18:35:18
Debes adaptarlo a tu codigo, te dara una idea:

// Por ejemplo un TSQLClientDataSet
// llamado cdsUnidad
procedure CrearCampo;
var
cdsUnidadCampoNuevo: TField;
begin
// Si vas a cambiar por completo tu
// select no es necesario que esto
// Cierras el dataset
cdsUnidad.Close;
// creas el campo nuevo
cdsUnidadCampoNuevo := TField.Create(cdsUnidadCampoNuevo);
cdsUnidadCampoNuevo.SetFieldType(ftInteger);
// O tambien
// cdsUnidadCampoNuevo := TIntegerField.Create(cdsUnidad);
// Debes de introducirlo en tu
// dataset
cdsUnidad.Fields.Add(cdsUnidadCampoNuevo);
cdsUnidad.CommandText := 'SELECT * FROM TABLA...'; // Select nuevo
cdsUnidad.Open;
// Cuando desees remover tu campo para *
// el otro select
cdsUnidad.Fields.Remove(cdsUnidadCampoNuevo); // y asi
end;

Pruebalo y me avisas, suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar