unit frm_SelectAlergeno;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids,
  Data.DB, FireDAC.Comp.Client, uAppTheme, frm_BaseSelect;

type
  TfrmSelectAlergeno = class(TfrmBaseSelect)
  protected
    procedure DoSearch; override;
    procedure DoSelect; override;
  end;

var
  frmSelectAlergeno: TfrmSelectAlergeno;

implementation

uses
  dmg_Main;

{$R *.dfm}

procedure TfrmSelectAlergeno.DoSearch;
begin
  dmgMain.qryExec.Close;
  dmgMain.qryExec.SQL.Text := 
    'SELECT id, nombre, nombre_tecnico ' +
    'FROM ge_alergenos ' +
    'WHERE activo = true ';
  
  if Trim(edtSearch.Text) <> '' then
  begin
    dmgMain.qryExec.SQL.Add('AND (nombre LIKE :search OR nombre_tecnico LIKE :search) ');
    dmgMain.qryExec.ParamByName('search').DataType := ftWideString;
    dmgMain.qryExec.ParamByName('search').AsWideString := '%' + Trim(edtSearch.Text) + '%';
  end;
  
  dmgMain.qryExec.SQL.Add('ORDER BY nombre');
  dmgMain.qryExec.Open;
  
  // Ocultar la columna ID en la rejilla
  if dmgMain.qryExec.FindField('id') <> nil then
    dmgMain.qryExec.FieldByName('id').Visible := False;
end;

procedure TfrmSelectAlergeno.DoSelect;
begin
  if MultiSelect then
    inherited
  else
  begin
    if not dmgMain.qryExec.IsEmpty then
    begin
      SelectedId := dmgMain.qryExec.FieldByName('id').AsString;
      SelectedCode := dmgMain.qryExec.FieldByName('id').AsString;
      SelectedDesc := dmgMain.qryExec.FieldByName('nombre').AsString;
      ModalResult := mrOk;
    end;
  end;
end;

end.
