﻿unit ftratamientosbase;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, ZAbstractRODataset,
  ZAbstractDataset, ZDataset, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, Vcl.ExtCtrls,
  Vcl.DBCtrls, frxClass, frxDBSet;

type
  Ttratamientosbase = class(TForm)
    qtratamientos: TZQuery;
    qtratamientosdetalle: TZQuery;
    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: TZQuery;
    qtratamientosdetalleorden: TIntegerField;
    DBGrid1: TDBGrid;
    Panel5: TPanel;
    qcampanyas: TZReadOnlyQuery;
    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: TZQuery;
    qtratamientos2ide: TIntegerField;
    qtratamientos2id: TIntegerField;
    qtratamientos2descripcion: TWideStringField;
    qtratamientos2tipo: TWideStringField;
    qtratamientos2observaciones: TWideStringField;
    qtratamientos2fecha: TDateField;
    qinsertardetalles2: TZReadOnlyQuery;
    qtratamientosvelocidad: TFloatField;
    qtratamientosnum_boquillas: TIntegerField;
    Button5: TButton;
    qtratamientoslitros_hect: TIntegerField;
    qboquillas: TZReadOnlyQuery;
    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: TZReadOnlyQuery;
    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: TZReadOnlyQuery;
    qvariedadesparcelasvariedad: TWideStringField;
    qparcelas: TZReadOnlyQuery;
    qparcelascodpar: TWideStringField;
    qparcelasnombre: TWideStringField;
    qparcelassuperficie: TFloatField;
    qparcelasancho_calle: TFloatField;
    qparcelasempresa: TIntegerField;
    qparcelasnumero: TWideStringField;
    dsqparcelas: TDataSource;
    dsqparcelasrecomendacion: TDataSource;
    qparcelasrecomendacion: TZQuery;
    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: TZReadOnlyQuery;
    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.
