FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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.
__________________
:) |
#3
|
||||
|
||||
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; P.D. Caramba veo que Vecino se me ha adelantado por una milesima de segundo
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ Última edición por jhonny fecha: 17-05-2003 a las 17:47:56. |
#4
|
|||
|
|||
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; |
#5
|
|||
|
|||
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. |
#6
|
|||
|
|||
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. |
|
|
|