TprxADODataSet

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Descripción

El objeto TprxADODataSet (Ancestro común a los datasets de Pragma.) implementa funcionalidad básica para simplificar el código relacionado con las operaciones de base de datos.

De alguna manera se asemeja al componente TprxADOQuerySelect que se encuentra en la jerarquía de los queries.

Identidad

  • Ancestro: TADODataSet
  • Carpeta: C:\DevelopPrx\library
  • Archivo: prxADODataSet.pas

Declaración

type
  TprxADODataSet = class(TADODataSet)
  private
    FMessages: TprxADODataSetMessages;
    FAutoFindConnection: Boolean;
    FBatchUpdates: Boolean;
    FDebugView: TprxListView;
    FTransactionCommands: TStringList;
    FScreenCursor: TCursor;
    FDataSource: TDataSource;
    Ffbn_parser_object: Tfva_parser_fbn;

    FTransactionCommandsXtd: TprxADODataSet_Commands;

    FGUID: String;
  protected
    FSupportQuery: TprxADOQuery;
    FSupportQuerySQL: TStringList;

    procedure   Loaded; override;
    function    FindConnection: Boolean;

    property    ScreenCursor: TCursor read FScreenCursor write FScreenCursor;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;

    procedure   Activate(aLoadRecords: Boolean); virtual;

    procedure   OnMessagesEnable(aValue: Boolean); virtual;
    function    ConectarDirecto(aDominio: String; aUsuario: String; aClave: String; aBaseDatos: String; aAutenticacionWindows: Boolean; aSQL: String = ''): Boolean;
    function    DomainName: String;

    procedure   Trace(aText: String; aImageIndex: Integer = 1);

    function    CreateDataSource: TDataSource;
    procedure   EventoNulo(Sender: TObject);

    function    Select(aSQLCommand: String = ''): Boolean; virtual;

    procedure   LocalAfterScroll(DataSet: TDataSet); virtual;
    procedure   FirstRecord(Sender: TObject);
    procedure   PriorRecord(Sender: TObject);
    procedure   NextRecord(Sender: TObject);
    procedure   LastRecord(Sender: TObject);

    function    FieldMaxValue(aFieldName: String): Integer;

    procedure   AssignFieldValueByName(aFieldName: String; aFieldValue: Variant); virtual;
    procedure   AssignFieldValueByName_Add(aFieldName: String; aFieldValue: Variant);

    function    SupportQuery: TprxADOQuery;

    property    SupportQuerySQL: TStringList read FSupportQuerySQL write FSupportQuerySQL;
    property    Messages: TprxADODataSetMessages read FMessages;
    property    TransactionCommandsXtd: TprxADODataSet_Commands read FTransactionCommandsXtd write FTransactionCommandsXtd;
    property    DataSource: TDataSource read FDataSource;

    property    fbn_parser_object: Tfva_parser_fbn read Ffbn_parser_object;

    property    GUID: String read FGUID;
  published
    property    ppAutoFindConnection: Boolean read FAutoFindConnection write FAutoFindConnection;
    property    ppBatchUpdates: Boolean read FBatchUpdates write FBatchUpdates;
    property    ppDebugView: TprxListView read FDebugView write FDebugView;
  end;

FAutoFindConnection: Boolean

El sentido de esta propiedad era indicar si el dataset debía encontrar automáticamente la conexión a la base de datos, pero finalmente ese es el comportamiento por defecto por lo que esta propiedad está OSBSOLETA y debería eliminarse.

ppBatchUpdates: Boolean

La propiedad no se usa más, se marca como OBSOLETA.

FDebugView: TprxListView

Ante la necesidad de hacer un control de los comandos ejecutados podemos instanciar esa lista para que el componente guarde algunos datos sobre su ejecución. No está en uso y se marca como OBSOLETA.

FDataSource: TDataSource

Los controles de edición que usan datos no conectan directamente a los datasets, sino que conectan a un componente denominado TDataSource que está conectado al dataset. Para simplificar la programación los componentes de tipo dataset crean su propio TDataSource y lo asignan a esta propiedad.

Ffbn_parser_object: Tfva_parser_fbn

Es el componente encargado de traducir usando los Lenguajes, el componente es Tfva_parser_fbn.

FTransactionCommandsXtd: TprxADODataSet_Commands

En lugar de usar las funciones nativas de los datasets que vuelcan los cambios hechos a la tabla a la base de datos casi automáticamente, Pragma transforma esos cambios en sentencias SQL que finalmente son aplicadas. Esta opción fue necesaria para soportar la replicación de datos. Esta propiedad guarda esos comandos.

FSupportQuery: TprxADOQuery

El dataset usa un TprxADOQuery de apoyo para algunas operaciones. El query es instanciado por este componente y asignado a esta propiedad.

Implementación

function ConectarDirecto(aDominio: String; aUsuario: String; aClave: String; aBaseDatos: String; aAutenticacionWindows: Boolean; aSQL: String = ): Boolean

Conecta un dataset directamente a una base de datos y tabla usando los argumentos:

  • aDominio es el nombre del servidor.
  • aUsuario es el código del usuario.
  • aClave es la contraseña del usuario.
  • aBaseDatos es el nombre de la base de datos.
  • aAutenticacionWindows cuando es True usa la autenticación de Windows, sino usa la de SQL SERVER. En toda la aplicación se usa la autenticación de SQL SERVER.

La función no se usa.

procedure LocalAfterScroll(DataSet: TDataSet)

Procedimiento llamado cada vez que cambiamos de registro dentro de un dataset, envía un mensaje msgScroll.

function FindConnection: Boolean

Busca entre los componentes de la aplicación hasta encontrar uno que sea de tipo TprxADOConnection y tenga la propiedad ppMainConnection = True.

procedure FirstRecord(Sender: TObject)

Llama al procedimiento nativo First del dataset que lleva el cursor de los datos al primer registro, se define como un evento para poder asignarse directamente al OnClick de un botón.

procedure PriorRecord(Sender: TObject)

Llama al procedimiento nativo Prior del dataset que lleva el cursor de los datos al registro anterior al activo, se define como un evento para poder asignarse directamente al OnClick de un botón.

procedure NextRecord(Sender: TObject)

Llama al procedimiento nativo Next del dataset que lleva el cursor de los datos al registro siguiente al activo, se define como un evento para poder asignarse directamente al OnClick de un botón.

procedure LastRecord(Sender: TObject)

Llama al procedimiento nativo Last del dataset que lleva el cursor de los datos al último registro, se define como un evento para poder asignarse directamente al OnClick de un botón.

function Select(aSQLCommand: String = ): Boolean

Ejecuta la sentencia de tipo SELECT del argumento, ante problemas levanta una excepción.

function FieldMaxValue(aFieldName: String): Integer

Retorna el valor más alto del campo solicitado en el argumento de todos los registros presentes en el DataSet, el campo debe ser de tipo Integer.

procedure AssignFieldValueByName(aFieldName: String; aFieldValue: Variant)

Asigna el valor aFieldValue al campo aFieldName. El procedimiento verifica si el campo es solo lectura, si lo es modifica ese atributo antes de asignarlo y luego lo vuelve de solo lectura.

procedure AssignFieldValueByName_Add(aFieldName: String; aFieldValue: Variant)

Similar anterior pero suma el valor aFieldValue al valor existente en el campo aFieldName.

Uso

Este dataset es ampliamente usado en la aplicación, tanto por su propia definición como por sus derivadas.