----------------------
var Orden,Filtro,Sentencia:String;
MiRepo:TKardexClasicoReport;
MiRepoSaldo:TKardexSaldosReport;
Id:integer;
begin
Orden := ' order by Id_Cliente,Id_Producto,Lote,fecha ';
Filtro := '';
Sentencia := 'select * from Kardex ';
if self.ClienteComboBox.ItemIndex>0 then
Filtro:=' where id_cliente='+intToStr(Dm.GetId_Cliente(self.ClienteComboBox.Text));
if self.ProductoComboBox.ItemIndex>0 then
if length(Filtro)=0 then Filtro:=' where id_producto='+IntToStr(Dm.GetId_Producto(self.ProductoComboBox.Text))
else Filtro:=Filtro+' and id_producto='+IntToStr(Dm.GetId_Producto(self.ProductoComboBox.Text));
if length(self.LoteEdit.Text)>0 then
if length(Filtro)=0 then Filtro:=' where Lote='+QuotedStr(self.LoteEdit.Text)
else Filtro:=Filtro+' and Lote='+QuotedStr(self.LoteEdit.Text);
if self.Ingresos.Checked then
if length(Filtro)=0 then Filtro:=' where TipoMovimiento=true'
else Filtro:=Filtro+' and TipoMovimiento=true';
if self.salidas.Checked then
if length(Filtro)=0 then Filtro:=' where TipoMovimiento=false'
else Filtro:=Filtro+' and TipoMovimiento=false';
if self.APartir.Checked then
if length(filtro)=0 then Filtro := ' where fecha>='+QuotedStr(FormatDateTime('mm/dd/yyyy',self.FechaAPartirDateTime.Date))
else Filtro := Filtro+' and fecha>='+QuotedStr(FormatDateTime('mm/dd/yyyy',self.FechaAPartirDateTime.Date));
if self.Desde.Checked then
if length(Filtro)=0 then Filtro := ' where fecha>='+QuotedStr(FormatDateTime('mm/dd/yyyy',self.FechaDesdeDateTime.Date))+' and fecha<='+QuotedStr(FormatDateTime('mm/dd/yyyy',self.FechaHastaDateTime.Date))
else Filtro := Filtro+' and fecha>='+QuotedStr(FormatDateTime('mm/dd/yyyy',self.FechaDesdeDateTime.Date))+' and fecha<='+QuotedStr(FormatDateTime('mm/dd/yyyy',self.FechaHastaDateTime.Date));
Dm.TrabajoQuery.Close;
Dm.TrabajoQuery.SQL.Clear;
Dm.TrabajoQuery.SQL.Add(Sentencia+Filtro+Orden);
Dm.TrabajoQuery.Active := true;
if Dm.TrabajoQuery.RecordCount > 0 then begin
self.CreandoTemporal;
Dm.TrabajoQuery.First;
id := 1;
while not Dm.TrabajoQuery.Eof do begin
Dm.TempDetTable.Append;
Dm.TempDetTable.FieldValues['Id_Temp'] := Id;
Dm.TempDetTable.FieldValues['Id_Kardex'] := Dm.TrabajoQuery.FieldByName('Id_Kardex').AsInteger;
Dm.TempDetTable.FieldValues['Id_Producto'] := Dm.TrabajoQuery.FieldByName('Id_Producto').AsInteger;
Dm.TempDetTable.FieldValues['Id_Cliente'] := Dm.TrabajoQuery.FieldByName('Id_Cliente').AsInteger;
Dm.TempDetTable.FieldValues['Fecha'] := Dm.TrabajoQuery.FieldByName('Fecha').AsDateTime;
Dm.TempDetTable.FieldValues['TipoMovimiento'] := Dm.TrabajoQuery.FieldByName('TipoMovimiento').AsBoolean;
Dm.TempDetTable.FieldValues['Lote'] := Dm.TrabajoQuery.FieldByName('Lote').AsString;
Dm.TempDetTable.FieldValues['Observaciones'] := Dm.TrabajoQuery.FieldByName('Observaciones').AsString;
Dm.TempDetTable.FieldValues['OrdenCompra'] := Dm.TrabajoQuery.FieldByName('OrdenCompra').AsString;
Dm.TempDetTable.FieldValues['ProductoLote'] := Dm.TrabajoQuery.FieldByName('Id_Producto').AsString+Dm.TrabajoQuery.FieldByName('Lote').AsString;
Dm.TempDetTable.FieldValues['PesoNeto'] := Dm.TrabajoQuery.FieldByName('PesoNeto').AsFloat;
Dm.TempDetTable.FieldValues['Id_Proveedor'] := Dm.TrabajoQuery.FieldByName('Id_Proveedor').AsInteger;
Dm.TempDetTable.FieldValues['Serie'] := Dm.TrabajoQuery.FieldByName('Serie').AsString;
Dm.TempDetTable.FieldValues['Numero'] := Dm.TrabajoQuery.FieldByName('Numero').AsString;
Dm.TempDetTable.FieldValues['Id_Parametro_tc'] := Dm.TrabajoQuery.FieldByName('Id_Parametro_tc').AsInteger;
Dm.TempDetTable.Post;
id := id + 1;
Dm.TrabajoQuery.Next;
end;
Sentencia := 'select Distinct id_Cliente,id_Producto,Lote from Kardex ';
Dm.Trabajo2Query.Close;
Dm.Trabajo2Query.SQL.Clear;
Dm.Trabajo2Query.SQL.Add(Sentencia+Filtro);
Dm.Trabajo2Query.Active := true;
if Dm.Trabajo2Query.RecordCount > 0 then begin
Dm.Trabajo2Query.First;
id := 1;
while not Dm.Trabajo2Query.Eof do begin
Dm.TempCabTable.Append;
Dm.TempCabTable.FieldValues['Id_Temp'] := Id;
Dm.TempCabTable.FieldValues['Id_Producto'] := Dm.Trabajo2Query.FieldByName('Id_Producto').AsInteger;
Dm.TempCabTable.FieldValues['Lote'] := Dm.Trabajo2Query.FieldByName('Lote').AsString;
Dm.TempCabTable.FieldValues['ProductoLote'] := Dm.Trabajo2Query.FieldByName('Id_Producto').AsString+Dm.Trabajo2Query.FieldByName('Lote').AsString;
Dm.TempCabTable.FieldValues['Id_Cliente'] := Dm.Trabajo2Query.FieldByName('Id_Cliente').AsInteger;
Dm.TempCabTable.Post;
id := id + 1;
Dm.Trabajo2Query.Next;
end;
end;
Sentencia := 'select Distinct id_Cliente,id_Producto from Kardex ';
Dm.Trabajo2Query.Close;
Dm.Trabajo2Query.SQL.Clear;
Dm.Trabajo2Query.SQL.Add(Sentencia+Filtro);
Dm.Trabajo2Query.Active := true;
if Dm.Trabajo2Query.RecordCount > 0 then begin
Dm.Trabajo2Query.First;
id := 1;
while not Dm.Trabajo2Query.Eof do begin
Dm.TemporalTable.Append;
Dm.TemporalTable.FieldValues['Id_Temp'] := Id;
Dm.TemporalTable.FieldValues['Id_Producto'] := Dm.Trabajo2Query.FieldByName('Id_Producto').AsInteger;
Dm.TemporalTable.FieldValues['Id_Cliente'] := Dm.Trabajo2Query.FieldByName('Id_Cliente').AsInteger;
Dm.TemporalTable.Post;
id := id + 1;
Dm.Trabajo2Query.Next;
end;
end;
Sentencia := 'select Distinct id_Cliente from Kardex ';
Dm.Trabajo2Query.Close;
Dm.Trabajo2Query.SQL.Clear;
Dm.Trabajo2Query.SQL.Add(Sentencia+Filtro);
Dm.Trabajo2Query.Active := true;
self.LlenarSaldoTemporal;
Dm.TempDetTable.Active := false;
DM.TempDetTable.IndexName := 'ProductoLote';
Dm.TempDetTable.MasterSource := Dm.CabeceraDataSource;
Dm.TempDetTable.MasterFields := 'ProductoLote';
Dm.CabeceraDataSource.DataSet := Dm.TempCabTable;
Dm.TempDetTable.Active := true;
Dm.TempCabTable.Active := false;
DM.TempCabTable.IndexName := 'Id_Producto';
Dm.TempCabTable.MasterSource := Dm.TemporalDataSource;
Dm.TempCabTable.MasterFields := 'Id_Producto';
Dm.TemporalDataSource.DataSet := Dm.TemporalTable;
Dm.TempCabTable.Active := true;
Dm.TemporalTable.Active := false;
Dm.TemporalTable.IndexName := 'Id_Cliente';
Dm.TemporalTable.MasterSource := Dm.TrabajoDataSource;
Dm.TemporalTable.MasterFields := 'Id_Cliente';
Dm.TrabajoDataSource.DataSet := Dm.Trabajo2Query;
Dm.TemporalTable.Active := true;
if self.Excel.Checked then
begin
self.GenerarExcelClasico;
end
else begin
if self.Clasico.Checked then begin
MiRepo := TKardexClasicoReport.Create(self);
MiRepo.PreviewModal;
MiRepo.Free;
end;
if self.Saldos.Checked then begin
MiRepoSaldo := TKardexSaldosReport.Create(self);
MiRepoSaldo.PreviewModal;
MiRepoSaldo.Free;
end;
end;
Dm.TempDetTable.Close;
Dm.TempDetTable.DeleteTable;
Dm.TempCabTable.Close;
Dm.TempCabTable.DeleteTable;
Dm.TemporalTable.Close;
Dm.TemporalTable.DeleteTable;
Dm.TrabajoQuery.Close;
Dm.TrabajoQuery.SQL.Clear;
Dm.Trabajo2Query.Close;
Dm.Trabajo2Query.SQL.Clear;
---- Procedimiento de creacion de Temporales ---
procedure TKardexHiloConsultaForm.CreandoTemporal;
var lencontro:boolean;
MiTabla:String;
Numero:integer;
begin
Dm.TempDetTable.Close;
Dm.TempDetTable.TableType := ttParadox;
Numero := 1;
MiTabla := '_TEMP_';
lencontro := false;
while lencontro=false do begin
Dm.TempDetTable.TableName := MiTabla+Trim(IntToStr(Numero));
if Dm.TempDetTable.Exists then Numero := Numero + 1
else lencontro := true;
end;
with Dm.TempDetTable.FieldDefs do
begin
Clear;
Add('Id_Temp', ftInteger, 0, True);
Add('Id_Kardex', ftInteger, 0, True);
Add('ProductoLote', ftString, 30, True);
Add('Id_Producto', ftInteger, 0, FALSE);
Add('Id_Cliente', ftInteger, 0, FALSE);
Add('Fecha', ftDate, 0, FALSE);
Add('TipoMovimiento', ftBoolean, 0, FALSE);
Add('Lote', ftString, 80, FALSE);
Add('Observaciones', ftString, 150, FALSE);
Add('OrdenCompra', ftString, 30, FALSE);
Add('PesoNeto', ftFloat, 0, FALSE);
Add('Saldo', ftFloat, 0, FALSE);
Add('Id_Proveedor', ftInteger, 0, FALSE);
Add('Id_Parametro_tc', ftInteger, 0, FALSE);
Add('Serie', ftString, 5, FALSE);
Add('Numero', ftString, 10, FALSE);
end;
Dm.TempDetTable.Exclusive := true;
Dm.TempDetTable.IndexDefs.Clear;
with Dm.TempDetTable.IndexDefs.AddIndexDef do begin
Name := '';
Fields := 'Id_Temp';
Options := [ixPrimary];
end;
with Dm.TempDetTable.IndexDefs.AddIndexDef do begin
Name := 'ProductoLote';
Fields := 'ProductoLote';
end;
Dm.TempDetTable.CreateTable;
Dm.TempDetTable.Active := true;
Dm.TempDetTable.FieldDefs.Update;
Dm.TempCabTable.Close;
Dm.TempCabTable.TableType := ttParadox;
Numero := 1;
MiTabla := '_TEMP_';
lencontro := false;
while lencontro=false do begin
Dm.TempCabTable.TableName := MiTabla+Trim(IntToStr(Numero));
if Dm.TempCabTable.Exists then Numero := Numero + 1
else lencontro := true;
end;
with Dm.TempCabTable.FieldDefs do
begin
Clear;
Add('Id_Temp', ftInteger, 0, True);
Add('ProductoLote', ftString, 30, true);
Add('Id_Cliente', ftInteger, 0, FALSE);
Add('Id_Producto', ftInteger, 0, FALSE);
Add('Lote', ftString, 80, FALSE);
Add('Saldo', ftFloat, 0, FALSE);
end;
Dm.TempCabTable.Exclusive := true;
Dm.TempCabTable.IndexDefs.Clear;
with Dm.TempCabTable.IndexDefs.AddIndexDef do begin
Name := '';
Fields := 'Id_Temp';
Options := [ixPrimary];
end;
with Dm.TempCabTable.IndexDefs.AddIndexDef do begin
Name := 'Id_Producto';
Fields := 'Id_Producto';
end;
Dm.TempCabTable.CreateTable;
Dm.TempCabTable.Active := true;
Dm.TempCabTable.FieldDefs.Update;
Dm.TempCabTable.IndexDefs.Update;
Dm.TemporalTable.Close;
Dm.TemporalTable.TableType := ttParadox;
Numero := 1;
MiTabla := '_TEMP_';
lencontro := false;
while lencontro=false do begin
Dm.TemporalTable.TableName := MiTabla+Trim(IntToStr(Numero));
if Dm.TemporalTable.Exists then Numero := Numero + 1
else lencontro := true;
end;
with Dm.TemporalTable.FieldDefs do
begin
Clear;
Add('Id_Temp', ftInteger, 0, True);
Add('Id_Cliente', ftInteger, 0, True);
Add('Id_Producto', ftInteger, 0, FALSE);
end;
Dm.TemporalTable.Exclusive := true;
Dm.TemporalTable.IndexDefs.Clear;
with Dm.TemporalTable.IndexDefs.AddIndexDef do begin
Name := '';
Fields := 'Id_Temp';
Options := [ixPrimary];
end;
with Dm.TemporalTable.IndexDefs.AddIndexDef do begin
Name := 'Id_Cliente';
Fields := 'Id_Cliente';
end;
Dm.TemporalTable.CreateTable;
Dm.TemporalTable.Active := true;
Dm.TemporalTable.FieldDefs.Update;
Dm.TemporalTable.IndexDefs.Update;
end;