D7 + Firebird 2.0.
Tengo un IbDataset ubicado en un Datamodulo lanzo una consulta y funciona correctamente, pero no la segunda vez y siguientes que me sigue mostrando los datos de la primera vez a pesar de que desconecto el DataSet y destruyo el Datamodulo en el que se encuentra.
Código Delphi
[-][procedure TfrMenu.StockPPedido1Click(Sender: TObject);
begin
Listado:=3;
AbrirCerrar_Modulo_DmExisten(1);
Application.CreateForm(TfrExistencias, frExistencias);
frExistencias.ShowModal;
AbrirCerrar_Modulo_DmExisten(0);
end;
Procedure AbrirCerrar_Modulo_DmExisten(N:Integer);
begin
Case n of
1:Application.CreateForm(TDmExisten ,DmExisten);
2:FreeAndNil(DmExisten);
end;
end;
procedure TfrExistencias.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=CaFree;
end;
procedure TfrExistencias.spbuscarClick(Sender: TObject);
begin
if Length(edBuscar.Text) > 2 then
DmExisten.IBDtsPVP.Locate('Producto',edBuscar.Text,[loPartialKey])
else
ShowMessage('ATENCION: Teclee al menos tres caracteres.');
end;
procedure TfrExistencias.FormActivate(Sender: TObject);
begin
DmExisten.IbDtsPvp.Close;
DmExisten.IbDtsPvp.SelectSQL.Clear;
DmExisten.IbDtsPvp.SelectSQL.Add('Select * from Pvp Where Activo=''S''');
case Listado of
1:begin
DmExisten.IbDtsPvp.SelectSQL.Add('And StockReal > 0');
frExistencias.Caption:='Productos con existencias.';
end;
2:begin
DmExisten.IbDtsPvp.SelectSQL.Add('And PPedido<= 0');
frExistencias.Caption:='Productos con Punto de Pedido <= 0.';
end;
3:begin
DmExisten.IbDtsPvp.SelectSQL.Add('And StockReal <= PPedido');
frExistencias.Caption:='Productos con StockReal <= Punto de Pedido.';
end;
4:begin
DmExisten.IbDtsPvp.SelectSQL.Add('And Codigo Starting With '+QuotedSTr(Codigo));
frExistencias.Caption:='Existencias de Productos de '+cMensaje;
end;
end;
DmExisten.IbDtsPvp.SelectSQL.Add('Order by Producto');
ShowMessage(DmExisten.IbDtsPvp.SelectSQL.Text);
DmExisten.IbDtsPvp.Open;
DmExisten.IbDtsPvp.Last;
DbgrExist.DataSource:=Nil;
Navega.DataSource:=Nil;
DbgrExist.DataSource:=DmExisten.DtsPvp;
Navega.DataSource:=DmExisten.DtsPvp;
lbRegistros.Caption:='Número de Productos:'+FormatFloat(',0',DmExisten.IbDtsPvp.RecordCount);
end;
procedure TfrExistencias.SpeedButton1Click(Sender: TObject);
begin
Application.CreateForm(TfrLstExistencias, frLstExistencias);
frLstExistencias.ListaExistencias.PreviewModal;
frLstExistencias.Close;
end;
Con el código en rojo he logrado que me funcione, ahora el problema es que tengo conectado un QuickRep al mismo DataSet y siempre me lanza el mismo listado, es decir el de la primera consulta. ???
Un Saludo.