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)
-   -   Cambiar SelectSQL en ejecución (https://www.clubdelphi.com/foros/showthread.php?t=551)

Tomás 17-05-2003 17:18:36

Cambiar SelectSQL en ejecución
 
Hola a todos:

En una tabla de InterBase quiero cambiar la propiedad SelectSQL de un DataSet pero "en ejecución" y no se como de escribre este código.

Tengo seleccionado todo

Select * from PARTE

Y en un momento dado quiero filtrar para que quede:

Select * from PARTE
where MES = 'variableconnumeromes'

para hacer un report y luego volverlo a dejar como estaba

Select * from PARTE

¿ Qué código hay que escribir ?

Muchas gracias. Tomás.

vecino 17-05-2003 17:45:04

Hola:

Es tan sencillo como cerrar el dataset, asignar lo que quieras y volver a abrirlo.

ibDataset1.Close;
ibDataset1.SelectSQL.Text := 'Select ... where ... ';
ibDataset1.Open;

Saludos.

jhonny 17-05-2003 17:45:32

Empecemos por el principio:

1. Propiedad SelectSQL? R// Asumo de que te refieres a que estas haciendo un Select en la propiedad SQL de un TQuery.

Si es asi... entonces lo puedes cambiar de la siguiente manera en tiempo de ejecucion:

Supongamos que quieres cambiar el SQL en el Evento OnClick de un Boton llamado "Boton1" y que el TQuery se llama "Query1" y que la variable con numero del mes (a la cual le haces referencia en tu segundo SQL) se llama "mes".

Código:

procedure TForm1.Boton1Click(Sender :TObject);
begin
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from PARTE where MES= :variableconnumeromes');
    Query1.Close;
    Query1.ParamByName('variableconnumeromes').AsInteger:=mes;
    Query1.Open; //esta linea es por si quieres abrir el Query en este momento
end;

Bueno eso es todo, Suerte:)

P.D. Caramba veo que Vecino se me ha adelantado por una milesima de segundo :D

__cadetill 17-05-2003 21:11:03

ya que dices que es para hacer un report (un listado), yo lanzaria una Query por separado

Código:


var Q : TIBQuery
begin
    Q := TIBQuery.Create;
    try
        Q.Database := IBDataBase1;
        Q.SQL.Text := 'Select * from PARTE ' +
                              ' where MES = ' variableconnumeromes;
        Q.Open;
        // Lanzar Listado
    finally
        FreeAndNil(Q);
    end;
end;

Espero te sirva

Tomás 18-05-2003 00:56:15

Gracias Vecino por tu ayuda, efectivamente funciona como me has indicado. Con estas líneas:
DecodeDate(DTPDesde.Date,AA,MM,DD);
IBDSParte.Close;
IBDSParte.SelectSQL.Text := 'Select * from PARTE where MES = ' + IntToStr(MM);
IBDSParte.Open;

Gracias Jhonny. No es un TQuery, es un TIBDataSet, y una de sus propiedades es SelectSQL. De todas maneras he probado con tus indicaciones y así también funciona:
DecodeDate(DTPDesde.Date,AA,MM,DD);
IBDSParte.Close;
IBDSParte.SelectSQL.Clear;
IBDSParte.sELECTSQL.Add('Select * from PARTE where MES= ' + IntToStr(MM));
IBDSParte.Open;

Gracias de nuevo a los dos. Tomás.

Tomás 18-05-2003 01:04:45

Gracias Cadetill, aunque ya lo he resuelto, me viene bien saberlo para otra ocación que lo necesite, porque soy principiante en Delphi.

Un saludo. Tomás.


La franja horaria es GMT +2. Ahora son las 10:24:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi