Cambiar Fields de un Query en tiempo de ejecuci贸n

cjre
17 de Diciembre del 2003
Hola.

Tengo un Query que accede a 2 tabla distintas en tiempo de ejecuci贸n, he conseguido actualizar la propiedad FieldDefs para que contenga en todo momento las columnas asociadas a la tabla actual. Pero no he conseguido cambien en tiempo de ejecuci贸n la propiedad Fields del Query, ¿alguien sabe como hacer esto?

francis_tuc
17 de Diciembre del 2003
No se puede cambiar la propiedad Fields de un TQuery, mas si est谩s tomando campos de dos tablas distintas.
Con un TTable se puede hacer, pero no con un TQuery.

Pedro
17 de Diciembre del 2003
Mira yo me olvido del query solo ingreso la sentencia de SQL directamente en EjecutaSQL(Select * From tabla Where condicion) y listo.
-------------------------------------------------------------------------
int __fastcall EjecutaSQL(const AnsiString Instruccion)
{
std::auto_ptr<TQuery>query(new TQuery(NULL));
query->SQL->Text=Instruccion;
query->ExecSQL();
return query->RowsAffected;
}

OrlandoPortillo
17 de Diciembre del 2003
Puedes cambir los campos de un query facilmente en tiempo de ejecucion. Puedes cerrar el query, llenar su propiedad SQL de nuevo y volverlo a abrir..

Ejemplo : Q_Entr componente Query.

en ejecucion:

Q_Entr.Close; { Cierra el query }
Q_Entr.SQL.Clear; { limpia la propiedad SQL del query }
Q_Entr.SQL.Add('Select lista_de_campos_separados_por_coma from DINVENTR');
Q_Entr.SQL.Add('Where sucursal=1');
Q_Entr.SQL.Add('Order by fecha');
Q_Entr.Prepare; { Hace una prueba de Ejecucion del query }
Q_Entr.Open; { Abre el query de acuerdo a la sentencia SQL que le pasaste }

Con este codigo es un ejemplo de manipular un query en tiempo de ejecucion. y puedes cambia incluso hasta la tabla.