﻿unit ftratamientosbase;

interface

uses
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, uFireDacHelper,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, 
    Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, Vcl.ExtCtrls,
  Vcl.DBCtrls, frxClass, frxDBSet;

type
  Ttratamientosbase = class(TForm)
    qtratamientos: TFDQuery;
    qtratamientosdetalle: TFDQuery;
    dstratamientos: TDataSource;
    qtratamientoside: TIntegerField;
    qtratamientosid: TIntegerField;
    qtratamientosdescripcion: TWideStringField;
    qtratamientostipo: TWideStringField;
    qtratamientosdetalleide: TIntegerField;
    qtratamientosdetalleidt: TIntegerField;
    qtratamientosdetalleidaf: TIntegerField;
    qtratamientosdetalleidma: TIntegerField;
    qtratamientosdetalledescripcion_af: TWideStringField;
    qtratamientosdetallecantidad_base: TFloatField;
    qtratamientosdetalledosis: TFloatField;
    qtratamientosdetalleunidad_medida: TWideStringField;
    dstratamientosdetalle: TDataSource;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel1: TPanel;
    DBGrid2: TDBGrid;
    qtratamientosdetalledescripcion_ma: TWideStringField;
    qtratamientosdetalleregistro: TWideStringField;
    qtratamientosdetalleplazo: TIntegerField;
    qtratamientosobservaciones: TWideStringField;
    qtratamientosdetalleficha: TBlobField;
    qtratamientosdetallecantidad_mezcla: TIntegerField;
    qtratamientosdetallecantidad_materia: TFloatField;
    Button4: TButton;
    dbtratamiento: TfrxDBDataset;
    dbempresa: TfrxDBDataset;
    dbtratamientosdetalle: TfrxDBDataset;
    informes: TfrxReport;
    btAnuevo: TButton;
    btAborrar: TButton;
    btAmodificar: TButton;
    btAguardar: TButton;
    btAcancelar: TButton;
    Panel13: TPanel;
    Button2: TButton;
    Button3: TButton;
    qaux: TFDQuery;
    qtratamientosdetalleorden: TIntegerField;
    DBGrid1: TDBGrid;
    Panel5: TPanel;
    qcampanyas: TFDQuery;
    qcampanyasid: TIntegerField;
    qcampanyasidempresa: TIntegerField;
    qcampanyasid_anterior: TIntegerField;
    qcampanyasdescripcion: TWideStringField;
    qcampanyasfechainicio: TDateField;
    qcampanyasfechafin: TDateField;
    qcampanyasult_pesada: TIntegerField;
    dsqcampanyas: TDataSource;
    combocampanyas: TDBLookupComboBox;
    Label301: TLabel;
    qtratamientosfecha: TDateField;
    Button1: TButton;
    qtratamientos2: TFDQuery;
    qtratamientos2ide: TIntegerField;
    qtratamientos2id: TIntegerField;
    qtratamientos2descripcion: TWideStringField;
    qtratamientos2tipo: TWideStringField;
    qtratamientos2observaciones: TWideStringField;
    qtratamientos2fecha: TDateField;
    qinsertardetalles2: TFDQuery;
    qtratamientosvelocidad: TFloatField;
    qtratamientosnum_boquillas: TIntegerField;
    Button5: TButton;
    qtratamientoslitros_hect: TIntegerField;
    qboquillas: TFDQuery;
    dsqboquillas: TDataSource;
    comboboquillas: TDBLookupComboBox;
    qboquillasid: TIntegerField;
    qboquillascodigo: TWideStringField;
    qboquillasdescripcion: TWideStringField;
    qboquillasFloatField5bar: TFloatField;
    qboquillasFloatField6bar: TFloatField;
    qboquillasFloatField7bar: TFloatField;
    qboquillasFloatField8bar: TFloatField;
    qboquillasFloatField9bar: TFloatField;
    qboquillasFloatField10bar: TFloatField;
    qboquillasFloatField11bar: TFloatField;
    qboquillasFloatField12bar: TFloatField;
    qboquillasFloatField13bar: TFloatField;
    qboquillasFloatField14bar: TFloatField;
    qboquillasFloatField15bar: TFloatField;
    qboquillasFloatField16bar: TFloatField;
    qboquillasFloatField17bar: TFloatField;
    qboquillasFloatField18bar: TFloatField;
    qboquillasFloatField19bar: TFloatField;
    qboquillasFloatField20bar: TFloatField;
    qboquillasFloatField21bar: TFloatField;
    qboquillasFloatField22bar: TFloatField;
    qboquillasFloatField23bar: TFloatField;
    qboquillasFloatField24bar: TFloatField;
    qboquillasFloatField25bar: TFloatField;
    qtratamientosdesc_boquilla: TWideStringField;
    qlitrosminuto: TFDQuery;
    qtratamientoslitros_minuto: TFloatField;
    qtratamientostipo_boquilla: TWideStringField;
    Button6: TButton;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    DBGrid3: TDBGrid;
    DBGrid4: TDBGrid;
    Panel10: TPanel;
    Button7: TButton;
    Button8: TButton;
    Panel11: TPanel;
    DBGrid5: TDBGrid;
    dsqvariedades: TDataSource;
    qvariedadesparcelas: TFDQuery;
    qvariedadesparcelasvariedad: TWideStringField;
    qparcelas: TFDQuery;
    qparcelascodpar: TWideStringField;
    qparcelasnombre: TWideStringField;
    qparcelassuperficie: TFloatField;
    qparcelasancho_calle: TFloatField;
    qparcelasempresa: TIntegerField;
    qparcelasnumero: TWideStringField;
    dsqparcelas: TDataSource;
    dsqparcelasrecomendacion: TDataSource;
    qparcelasrecomendacion: TFDQuery;
    qparcelasrecomendacionid: TIntegerField;
    qparcelasrecomendacionide: TIntegerField;
    qparcelasrecomendacionidtb: TIntegerField;
    qparcelasrecomendacionparcela: TWideStringField;
    qparcelasrecomendacionsuperficie: TFloatField;
    qparcelasrecomendacionancho_calle: TFloatField;
    qparcelasrecomendacionidparcela: TWideStringField;
    qtratamientosancho_calle: TFloatField;
    qparcelasrecomendaciondistancialineal: TIntegerField;
    qtratamientos2velocidad: TFloatField;
    qtratamientos2num_boquillas: TIntegerField;
    qtratamientos2tipo_boquilla: TWideStringField;
    qtratamientos2litros_hect: TIntegerField;
    qtratamientos2desc_boquilla: TWideStringField;
    qtratamientos2litros_minuto: TFloatField;
    qtratamientos2ancho_calle: TFloatField;
    qpresion: TFDQuery;
    qpresioncodigo: TWideStringField;
    qpresionlitros_hect: TFloatField;
    qtratamientosventilador: TWideStringField;
    qtratamientospresion: TFloatField;
    qtratamientos2presion: TFloatField;
    qpresionpresion: TFloatField;
    procedure FormShow(Sender: TObject);
    procedure qtratamientosBeforePost(DataSet: TDataSet);
    procedure DBGrid2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button4Click(Sender: TObject);
    procedure qtratamientosdetalleAfterPost(DataSet: TDataSet);
    procedure Button2Click(Sender: TObject);
    procedure btAborrarClick(Sender: TObject);
    procedure btAnuevoClick(Sender: TObject);
    procedure btAmodificarClick(Sender: TObject);
    procedure btAguardarClick(Sender: TObject);
    procedure btAcancelarClick(Sender: TObject);
    procedure dstratamientosStateChange(Sender: TObject);
    procedure dsqcampanyasDataChange(Sender: TObject; Field: TField);
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure qtratamientosAfterPost(DataSet: TDataSet);
    procedure Button6Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure dstratamientosDataChange(Sender: TObject; Field: TField);
    procedure dsqvariedadesDataChange(Sender: TObject; Field: TField);
    procedure DBGrid1TitleClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  tratamientosbase: Ttratamientosbase;

implementation

{$R *.dfm}

uses datos, fbuscararticulos, fselecparcelas, fboquillas, fgenerartratamientos;

procedure Ttratamientosbase.btAborrarClick(Sender: TObject);
begin
    qtratamientos.Delete;
end;

procedure Ttratamientosbase.btAcancelarClick(Sender: TObject);
begin
    qtratamientos.Cancel;
end;

procedure Ttratamientosbase.btAguardarClick(Sender: TObject);
begin
    qtratamientos.Post;
end;

procedure Ttratamientosbase.btAmodificarClick(Sender: TObject);
begin
    qtratamientos.Edit;
end;

procedure Ttratamientosbase.btAnuevoClick(Sender: TObject);
begin
    qaux.Close;
    qaux.ParamByName('EMPRESA').AsInteger:=dm.tempresaid.asinteger;
    qaux.Prepare;
    qaux.Open;
    qtratamientos.Append;
    qtratamientoside.value:=dm.tempresaid.AsInteger;
    qtratamientosid.Value:=qaux.Fields[0].AsInteger;
    qtratamientosfecha.Value:=date();

end;

procedure Ttratamientosbase.Button1Click(Sender: TObject);
begin
    qaux.Close;
    qaux.ParamByName('EMPRESA').AsInteger:=dm.tempresaid.asinteger;
    qaux.Prepare;
    qaux.Open;
    qtratamientos2.Open;
    qtratamientos2.Append;
    qtratamientos2ide.value:=qtratamientoside.AsInteger;
    qtratamientos2id.Value:=qaux.Fields[0].AsInteger;
    qtratamientos2fecha.Value:=date();
    qtratamientos2observaciones.value:=qtratamientosobservaciones.AsString;
    qtratamientos2descripcion.value:=qtratamientosdescripcion.AsString;
    qtratamientos2tipo.value:=qtratamientostipo.asstring;
    qtratamientos2velocidad.value:=qtratamientosvelocidad.Asfloat;
    qtratamientos2num_boquillas.value:=qtratamientosnum_boquillas.Asinteger;
    qtratamientos2presion.value:=qtratamientospresion.Asfloat;
    qtratamientos2litros_hect.value:=qtratamientoslitros_hect.Asinteger;
    qtratamientos2desc_boquilla.value:=qtratamientosdesc_boquilla.AsString;
    qtratamientos2litros_minuto.value:=qtratamientoslitros_minuto.Asinteger;
    qtratamientos2tipo_boquilla.value:=qtratamientostipo_boquilla.AsString;
    qtratamientos2ancho_calle.value:=qtratamientosancho_calle.Asfloat;
    qtratamientos2.post;
    qinsertardetalles2.Prepare;
    qinsertardetalles2.ParamByName('IDTNEW').AsInteger:=qaux.Fields[0].AsInteger;
    qinsertardetalles2.ParamByName('IDTOLD').AsInteger:=qtratamientosid.AsInteger;
    qinsertardetalles2.ParamByName('EMPRESA').AsInteger:=qtratamientoside.asinteger;
    qinsertardetalles2.ExecSQL;
    qcampanyas.First;
    combocampanyas.KeyValue:=qcampanyasdescripcion.AsString;
    qtratamientosdetalle.refresh;
end;

procedure Ttratamientosbase.Button2Click(Sender: TObject);
begin
    qtratamientosdetalle.Delete;
end;

procedure Ttratamientosbase.Button4Click(Sender: TObject);
begin
            qtratamientos.Filter:='id='+qtratamientosid.Asstring;
            qtratamientos.Filtered:=true;
            informes.Report.Clear;
            informes.LoadFromFile('c:\agrigest\informes\inftratamientosbase.fr3');
            informes.ShowReport();
            qtratamientos.Filtered:=false;

end;

procedure Ttratamientosbase.Button5Click(Sender: TObject);
begin
  generartratamientos := Tgenerartratamientos.Create(nil);
  try
    generartratamientos.vrecomendacion:=qtratamientosid.AsInteger;
    generartratamientos.vempresa:=qtratamientoside.AsInteger;
    generartratamientos.ShowModal();
  finally
    generartratamientos.Free;
  end;

end;

procedure Ttratamientosbase.Button6Click(Sender: TObject);
begin
  boquillas := Tboquillas.Create(nil);
  try
    boquillas.ShowModal;
  finally
    boquillas.Free;
  end;
end;

procedure Ttratamientosbase.Button7Click(Sender: TObject);
begin
   qparcelasrecomendacion.delete;
   qparcelas.Close;
   qparcelas.open;
end;

procedure Ttratamientosbase.Button8Click(Sender: TObject);
begin
   qparcelasrecomendacion.Append;
   qparcelasrecomendacionide.value:=qtratamientoside.AsInteger;
   qparcelasrecomendacionidtb.value:=qtratamientosid.AsInteger;
   qparcelasrecomendacionidparcela.value:=qparcelasnumero.AsSTRING;
   qparcelasrecomendacionparcela.value:=qparcelasnombre.AsString;
   qparcelasrecomendacionsuperficie.value:=qparcelassuperficie.AsFloat;
   qparcelasrecomendacionancho_calle.value:=qparcelasancho_calle.AsFloat;
   qparcelasrecomendacion.Post;
   qparcelas.Refresh;
   qparcelasrecomendacion.Refresh
end;

procedure Ttratamientosbase.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = comboboquillas.DataField) then
    with comboboquillas do
    begin
      Left := Rect.Left + DBGrid1.Left + 2;
      Top := Rect.Top + DBGrid1.Top + 2;
      Width := Rect.Right - Rect.Left;
      Width := Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
      setfocus;
      dropdown;
    end else comboboquillas.Visible:=false;
end;
end;


procedure Ttratamientosbase.DBGrid1TitleClick(Column: TColumn);
var
  vNombreCampo: string;
begin
  // 1. Obtener el nombre del campo asociado a la columna
  vNombreCampo := Column.FieldName;

  try
    if qtratamientos.SortType=stDescending then
      begin
        qtratamientos.SortedFields:=vnombrecampo;
        qtratamientos.SortType:=stAscending;
      end
    else
      begin
        qtratamientos.SortedFields:=vnombrecampo;
        qtratamientos.SortType:=stDescending;
      end;
  except
    on E: Exception do
      ShowMessage('No se pudo ordenar por esta columna: ' + E.Message);
  end;

end;

procedure Ttratamientosbase.DBGrid2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (key=115) then
    begin
      buscararticulos := Tbuscararticulos.Create(nil);
      try
        fbuscararticulos.filtro:=qtratamientosdetalledescripcion_af.AsString;
        buscararticulos.Edit1.Text:=qtratamientosdetalledescripcion_af.AsString;
        buscararticulos.showmodal();
      finally
        if qtratamientosdetalle.State in [dsbrowse] then qtratamientosdetalle.Edit;
        qtratamientosdetalleidaf.Value:=buscararticulos.qarticulosid.Asinteger;
        qtratamientosdetalleregistro.Value:=buscararticulos.qarticulosregistro.Asstring;
        qtratamientosdetalledescripcion_af.value:=buscararticulos.qarticulosdescripcion.AsString;
        qtratamientosdetalledescripcion_ma.Value:=buscararticulos.qarticulosmateria_activa.Asstring;
        qtratamientosdetalledosis.value:=0;
        qtratamientosdetalleplazo.value:=buscararticulos.qarticulosplazo_seguridad.Asinteger;
        buscararticulos.Free;
      end;
    end;
end;

procedure Ttratamientosbase.dsqcampanyasDataChange(Sender: TObject;
  Field: TField);
begin
   qtratamientos.Close;
   qtratamientos.Prepare;
   qtratamientos.ParamByName('FINICIO').AsDate:=qcampanyasfechainicio.asdatetime;
   qtratamientos.ParamByName('FFIN').AsDate:=qcampanyasfechafin.asdatetime;
   qtratamientos.ParamByName('EMPRESA').Asinteger:=qcampanyasidempresa.AsInteger;
   qtratamientos.Open;
end;

procedure Ttratamientosbase.dsqvariedadesDataChange(Sender: TObject;
  Field: TField);
  var vvariedad:string;
begin
    qparcelas.Close;
    qparcelas.Prepare;
    qparcelas.ParamByName('EMPRESA').AsInteger:=qtratamientoside.AsInteger;
    if qvariedadesparcelasvariedad.AsString=' CUALQUIERA' then vvariedad:='%' else vvariedad:=qvariedadesparcelasvariedad.AsString;
    qparcelas.ParamByName('VARIEDAD').AsString:=vvariedad;
    qparcelas.ParamByName('RECOMENDACION').AsInteger:=qtratamientosid.AsInteger;
    qparcelas.Open;
end;

procedure Ttratamientosbase.dstratamientosDataChange(Sender: TObject;
  Field: TField);
begin
   qvariedadesparcelas.open;
   qparcelasrecomendacion.Close;
   qparcelasrecomendacion.Prepare;
   qparcelasrecomendacion.ParamByName('EMPRESA').AsInteger:=qtratamientoside.asinteger;
   qparcelasrecomendacion.ParamByName('TRATAMIENTO').AsInteger:=qtratamientosid.asinteger;
   qparcelasrecomendacion.Open;
end;

procedure Ttratamientosbase.dstratamientosStateChange(Sender: TObject);
begin
    if qtratamientos.State in [dsedit,dsinsert] then
    begin
        btanuevo.Enabled:=false;
        btamodificar.Enabled:=false;
        btaborrar.Enabled:=false;
        btacancelar.Enabled:=true;
        btaguardar.Enabled:=true;
        button3.Enabled:=false;
        button2.Enabled:=false;


    end else
    begin
        btanuevo.Enabled:=true;
        btamodificar.Enabled:=true;
        btaborrar.Enabled:=true;
        btacancelar.Enabled:=false;
        btaguardar.Enabled:=false;
        button2.Enabled:=true;
        button3.Enabled:=true;
    end;
end;

procedure Ttratamientosbase.FormKeyPress(Sender: TObject; var Key: Char);
var
  isGrid: Boolean;
begin
  // Detectar si estamos en un DBGrid o dentro de su editor (InplaceEdit)
  isGrid := (ActiveControl is TCustomDBGrid) or
            ((ActiveControl <> nil) and (ActiveControl.Parent is TCustomDBGrid));

  // Conversión automática de punto a separador decimal
  if (Key = '.') and (FormatSettings.DecimalSeparator = ',') then
  begin
    Key := ',';
  end;

  // En el Grid, el Enter se comporta como Tab
  if isGrid and (Key = #13) then
  begin
    Key := #9;
  end;

  // Fuera del grid (o si ha sobrado el Enter), saltar de campo
  if (Key = #13) then
  begin
    Perform(WM_NextDLGCtl, 0, 0);
    Key := #0;
  end;

  // El resto a mayúsculas
  if not (Key in [#0..#31, '.', ',']) then
    Key := UpCase(Key);
end;

procedure Ttratamientosbase.FormShow(Sender: TObject);
begin
    qcampanyas.Open;
    combocampanyas.KeyValue:=qcampanyasdescripcion.Asstring;
    qtratamientosdetalle.Open;
    qboquillas.Open;
end;

procedure Ttratamientosbase.qtratamientosAfterPost(DataSet: TDataSet);
begin
   qtratamientos.Refresh;
   abort;
end;

procedure Ttratamientosbase.qtratamientosBeforePost(DataSet: TDataSet);
var campo:string;
begin
   if qtratamientospresion.AsString='' then
   begin
     qpresion.Close;
     qpresion.Prepare;
     qpresion.ParamByName('ANCHO').AsFloat:=qtratamientosancho_calle.AsFloat;
     qpresion.ParamByName('VELOCIDAD').AsInteger:=qtratamientosvelocidad.asinteger;
     qpresion.ParamByName('BOQUILLAS').AsInteger:=qtratamientosnum_boquillas.AsInteger;
     qpresion.ParamByName('LITROS').Asinteger:=qtratamientoslitros_hect.AsInteger;
     qpresion.ParamByName('CODBOQUILLA').AsString:=qboquillascodigo.asstring;
     qpresion.Open;
     if qpresionpresion.AsFloat=1 then campo:='1bar';
     if qpresionpresion.AsFloat=1.5 then campo:='1_5bar';
     if qpresionpresion.AsFloat=2 then campo:='2bar';
     if qpresionpresion.AsFloat=2.5 then campo:='2_5bar';
     if qpresionpresion.AsFloat=3 then campo:='3bar';
     if qpresionpresion.AsFloat=3.5 then campo:='3_5bar';
     if qpresionpresion.AsFloat=4 then campo:='4bar';
     if qpresionpresion.AsFloat=4.5 then campo:='4_5bar';
     if qpresionpresion.AsFloat=5 then campo:='5bar';
     if qpresionpresion.AsFloat=5.5 then campo:='5_5bar';
     if qpresionpresion.AsFloat=6 then campo:='6bar';
     if qpresionpresion.AsFloat=6.5 then campo:='6_5bar';
     if qpresionpresion.AsFloat=7 then campo:='7bar';
     if qpresionpresion.AsFloat=7.5 then campo:='7_5bar';
     if qpresionpresion.AsFloat=8 then campo:='8bar';
     if qpresionpresion.AsFloat=8.5 then campo:='8_5bar';
     if qpresionpresion.AsFloat=9 then campo:='9bar';
     if qpresionpresion.AsFloat=9.5 then campo:='9_5bar';
     if qpresionpresion.AsFloat=10 then campo:='10bar';
     if qpresionpresion.AsFloat=10.5 then campo:='10_5bar';
     if qpresionpresion.AsFloat=11 then campo:='11bar';
     if qpresionpresion.AsFloat=11.5 then campo:='11_5bar';
     if qpresionpresion.AsFloat=12 then campo:='12bar';
     if qpresionpresion.AsFloat=12.5 then campo:='12_5bar';
     if qpresionpresion.AsFloat=13 then campo:='13bar';
     if qpresionpresion.AsFloat=13.5 then campo:='13_5bar';
     if qpresionpresion.AsFloat=14 then campo:='14bar';
     if qpresionpresion.AsFloat=14.5 then campo:='14_5bar';
     if qpresionpresion.AsFloat=15 then campo:='15bar';
     if qpresionpresion.AsFloat=15.5 then campo:='15_5bar';
     if qpresionpresion.AsFloat=16 then campo:='16bar';
     if qpresionpresion.AsFloat=16.5 then campo:='16_5bar';
     if qpresionpresion.AsFloat=17 then campo:='17bar';
     if qpresionpresion.AsFloat=17.5 then campo:='17_5bar';
     if qpresionpresion.AsFloat=18 then campo:='18bar';
     if qpresionpresion.AsFloat=18.5 then campo:='18_5bar';
     if qpresionpresion.AsFloat=19 then campo:='19bar';
     if qpresionpresion.AsFloat=19.5 then campo:='19_5bar';
     if qpresionpresion.AsFloat=20 then campo:='20bar';
     if qpresionpresion.AsFloat=20.5 then campo:='20_5bar';
     if qpresionpresion.AsFloat=21 then campo:='21bar';
     if qpresionpresion.AsFloat=21.5 then campo:='21_5bar';
     if qpresionpresion.AsFloat=22 then campo:='22bar';
     if qpresionpresion.AsFloat=22.5 then campo:='22_5bar';
     if qpresionpresion.AsFloat=23 then campo:='23bar';
     if qpresionpresion.AsFloat=23.5 then campo:='23_5bar';
     if qpresionpresion.AsFloat=24 then campo:='24bar';
     if qpresionpresion.AsFloat=24.5 then campo:='24_5bar';
     if qpresionpresion.AsFloat=25 then campo:='25bar';
     if qpresionpresion.AsFloat=25.5 then campo:='25_5bar';

     //     campo:=qpresionpresion.AsString+'bar';
     qlitrosminuto.Close;
     qlitrosminuto.SQL.Clear;
     qlitrosminuto.SQL.Add('select '+campo+' from boquillas where codigo=:BOQUILLA');
     qlitrosminuto.Prepare;
     qlitrosminuto.ParamByName('BOQUILLA').AsString:=qboquillascodigo.AsString;
     qlitrosminuto.Open;
     qtratamientoside.Value:=dm.tempresaid.asinteger;
     qtratamientostipo_boquilla.Value:=qboquillascodigo.AsString;
     qtratamientoslitros_minuto.value:=qlitrosminuto.Fields[0].AsFloat;
     qtratamientospresion.value:=qpresionpresion.AsInteger;
   end else
   begin
     campo:=qtratamientospresion.AsString+'bar';
     qlitrosminuto.Close;
     qlitrosminuto.SQL.Clear;
     qlitrosminuto.SQL.Add('select '+campo+' from boquillas where codigo=:BOQUILLA');
     qlitrosminuto.Prepare;
     qlitrosminuto.ParamByName('BOQUILLA').AsString:=qboquillascodigo.AsString;
     qlitrosminuto.Open;
     qtratamientoside.Value:=dm.tempresaid.asinteger;
     qtratamientostipo_boquilla.Value:=qboquillascodigo.AsString;
     qtratamientoslitros_minuto.value:=qlitrosminuto.Fields[0].AsFloat;
   end;
end;

procedure Ttratamientosbase.qtratamientosdetalleAfterPost(DataSet: TDataSet);
begin
   qtratamientosdetalle.Refresh;
end;

end.
