TTfvsDBClientFrameGridConsultas

De Pragma Wiki
Revisión del 17:28 2 jun 2025 de Luciano Carou (discusión | contribs.) (→‎Descripción)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Descripción

El frame TTfvsDBClientFrameGridConsultas (Implementa grilla para consultas) implementa todo lo necesario para armar y procesar las consultas definidas en la categoría Consultas.

En diseño tiene casi el mismo aspecto que su ancestro, pero agrega un botón de Refrescar para actualizar los datos de la grilla.

Botón de refrescar.

Las consultas no usan el panel de criterios de búsqueda ya que sus argumentos son los que definen el resultado.

No confundir con TTfvsDBClientFrameGridClases que sirve exclusivamente para las clases (ver Clases).

Identidad

  • Ancestro: TTfvsDBClientFrame
  • Carpeta: C:\DevelopPrx\frames
  • Archivo: fvsDBClientFrameGridConsultas.pas

Declaración

type
  TTfvsDBClientFrameGridConsultas = class(TTfvsDBClientFrameGridCustom)
    prxScrollBoxCRITERIOS: TprxScrollBox;
    ButtonREFRESCAR: TButton;
    TimerREFRESCO: TTimer;
    StatusBar1: TStatusBar;
    procedure TimerREFRESCOTimer(Sender: TObject);
    procedure SQLEjecutar(Sender: TObject);
    procedure DBNavigatorCONTENIDONavigatorClick(Sender: TDBNavigator; aButton: TNavigateBtn; aX, aY: Integer; var aHandled: Boolean);
    procedure fvsDBGridResultadoGetPopupOptions(Sender: TComponent; aPopupMenu: TprxPopupMenu);
    procedure prxADODataSetEdit1ppOnShowFieldHint(Sender: TprxADODataSet; aCampo, aAtributo: String; aEnteros, aDecimales: Integer; aRequerido: Boolean; aIndicaciones: String; aConstraint: String);
  private
    FSentenciaList: TStringList;
    FQueryRESULTADO: TprxADOQuery;
    FDataSourceRESULTADO: TDataSource;
    FSQL_Criterios: String;
    FCriteriosForm: TTprxCriteriosConsultasForm;
  protected
    procedure   SetDataSet(aValue: TprxADODataSetEdit); override;

    function    UsaCRITERIOSFlag: Boolean; override;

    procedure   ArmarConsulta;
    procedure   AbrirFormCriterios(Sender: TObject);

    property    SentenciaList: TStringList read FSentenciaList write FSentenciaList;
    property    QueryRESULTADO: TprxADOQuery read FQueryRESULTADO write FQueryRESULTADO;
    property    DataSourceRESULTADO: TDataSource read FDataSourceRESULTADO write FDataSourceRESULTADO;

    property    SQL_Criterios: String read FSQL_Criterios write FSQL_Criterios;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure   OnFrameShow(Sender: TObject); override;

    function    AgregarControles(aDataSet: TprxADODataSetEdit; aTableName: String): Integer; override;

    procedure   ClassShow_BuildFrame(Sender: TObject); override;
    function    ClassShow_AgregarTablaMaster(aTabla: String): Boolean; override;
    function    ClassShow_AgregarControles: Boolean; override;
    function    ClassShow_Activate(aActivateDataSet: Boolean): Boolean; override;

    procedure   Relaciones_GetIds(aField: String; aList: TStringList);

    function    Argumentos: String;

    property    CriteriosForm: TTprxCriteriosConsultasForm read FCriteriosForm write FCriteriosForm;
  end;

Implementación

procedure DBNavigatorCONTENIDONavigatorClick(Sender: TDBNavigator; aButton: TNavigateBtn; aX, aY: Integer; var aHandled: Boolean)

Implementa una respuesta al botón de refresco que hace un refresco del dataset que a su vez actualiza el contenido de la grilla:

if aButton = nbRefresh then
   begin
   SQLEjecutar(Sender);
   fvsDBGridResultado.WidthJustify;

   aHandled := True;
   end;

procedure OnFrameShow(Sender: TObject)

Oculta algunos botones del navegador ya que al ser una consulta no requiere operaciones de edición, los botones son:

  • nbInsert inserción de registros.
  • nbDelete eliminado de registros.
  • nbEdit edición de registros.
  • nbPost posteo de registros.
  • nbCancel cancelar una operación en curso.

Arma a consulta usando la función ArmarConsulta.

Si la consulta no usa argumentos entonces llama directamente al refresco.

procedure prxADODataSetEdit1ppOnShowFieldHint(Sender: TprxADODataSet; aCampo, aAtributo: String; aEnteros, aDecimales: Integer; aRequerido: Boolean; aIndicaciones: String; aConstraint: String)

Muestra las indicaciones del campo en el StatusBar.

procedure fvsDBGridResultadoGetPopupOptions(Sender: TComponent; aPopupMenu: TprxPopupMenu)

Arma el menú popup cuando el usuario presiona el botón de opciones (botón amarillo a la derecha del navegador):

Menú popup.

procedure ArmarConsulta

Arma los comandos de la consulta leyéndolos desde Consultas, detalle (prxconsultasD).

procedure SQLEjecutar(Sender: TObject)

Ejecuta la sentencia de la consulta.

procedure TimerREFRESCOTimer(Sender: TObject)

Cuando el form se hace visible espera 500 milisegundos para posicionar el cursor sobre el primer campo de los argumentos, o si no los tiene, ejecutar la función de refresco de los datos. Esta función es la ejecutada después de esos 500 milisegundos.

Además, asigna valores a los campos ocultos (caso especial IdUsuarioDeLaConsulta que está oculto por estructura de la tabla) el resto lo estaría por configuración de atributos ocultos.

procedure AbrirFormCriterios(Sender: TObject)

Abre el form de los criterios si existen (ver DEV AUXILIARES/SELECCION CRITERIOS).

function ClassShow_AgregarControles: Boolean

Agrega los controles específicos de la consulta. Por ejemplo, los argumentos según lo definido en Consultas, argumentos (prxconsultasA).

Los argumentos ocupan el panel superior. Por ejemplo, dos criterios:

  • Cliente.
  • Fecha.
Argumentos de una consulta.

Si la consulta no tiene argumentos ese panel no estará visible.

Uso

Este frame se usa para todo lo definido en Consultas.