Diferencia entre revisiones de «TprxADOQuerySelect»
Sin resumen de edición |
|||
Línea 151: | Línea 151: | ||
*aSilent cuando se setea a 0 el componente dará un error si algo falla, cuando se setea a 1 el mensaje de error no será visible, pero se informará al componente que llamó a la función para que lo procese. | *aSilent cuando se setea a 0 el componente dará un error si algo falla, cuando se setea a 1 el mensaje de error no será visible, pero se informará al componente que llamó a la función para que lo procese. | ||
===function SelectRecordCount(aStrings: TStrings; aSilent: Boolean = False): Integer=== | ===function SelectRecordCount(aStrings: TStrings; aSilent: Boolean = False): Integer=== | ||
Similar anterior, pero usa una lista de strings para el comando. | Similar anterior, pero usa una lista de strings para el comando. | ||
Revisión del 20:41 15 may 2025
Introducción
El objeto TprxADOQuerySelect (Query con funcionalidad básica.) implementa funcionalidad básica para simplificar el código relacionado con las operaciones de base de datos.
Identidad
- Ancestro: TADOQuery
- Carpeta: C:\DevelopPrx\library
- Archivo: prxADOQuerySelect.pas
Declaración
type TprxADOQuerySelect = class(TADOQuery) private FAutoFindConnection: Boolean; FSQLX: TStringList; FMensajeError: String; Ffvs: Boolean; FSilentError: Boolean; FMasterDataSet: TDataSet; Ffbn_parser_object: Tfva_parser_fbn; FGUID: String; protected function FindConnection: Boolean; procedure Traducir; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Loaded; override; procedure FirstRecord(Sender: TObject); procedure PriorRecord(Sender: TObject); procedure NextRecord(Sender: TObject); procedure LastRecord(Sender: TObject); function DatabaseExists(aBaseDatos: String): Boolean; function TableExists(aTabla: String): Boolean; function Select(aSQLCommand: String; aSilent: Boolean = False): Boolean; overload; function Select(aStrings: TStrings; aSilent: Boolean = False): Boolean; overload; function SelectRecordCount(aSQLCommand: String; aSilent: Boolean = False): Integer; overload; function SelectRecordCount(aStrings: TStrings; aSilent: Boolean = False): Integer; overload; function SelectFieldValue(aSQLCommand: String; aFieldName: String): Variant; overload; function SelectFieldValue(aStrings: TStrings; aFieldName: String): Variant; overload; procedure SelectToList(aComando: String; aCampo: String; aLista: TStrings); function Refresh(aSilent: Boolean = False): Boolean; procedure VerSentenciaClickAdd(Sender: TprxPopupMenu); procedure VerSentenciaClick(Sender: TObject); property SilentError: Boolean read FSilentError write FSilentError; property SQLX: TStringList read FSQLX write FSQLX; property MensajeError: String read FMensajeError write FMensajeError; property fvs: Boolean read Ffvs write Ffvs; property MasterDataSet: TDataSet read FMasterDataSet write FMasterDataSet; property fbn_parser_object: Tfva_parser_fbn read Ffbn_parser_object; property GUID: String read FGUID; published property ppAutoFindConnection: Boolean read FAutoFindConnection write FAutoFindConnection; end;
FAutoFindConnection: Boolean
El sentido de esta propiedad era indicar si el dataset debía encontrar en forma automática 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.
FMasterDataSet: TDataSet
En el frame TTfvsDBClientFrameGridConsultas que administra las Consultas existen dos datasets:
- Uno que administra los argumentos de la consulta.
- Otro que retorna el resultado.
La propiedad FMasterDataSet del dataset que administra el resultado se setea con el valor del dataset que maneja los argumentos, solo para el caso de usarse el comando FBN que toma valores de campos de un dataset.
Ffbn_parser_object: Tfva_parser_fbn
Es el componente encargado de traducir usando los Lenguajes, el componente es Tfva_parser_fbn.
FGUID: String
Cada vez que se instancia el componente toma un GUID / UUID que sirve como un identificador único, no puede haber dos componentes con el mismo código.
Implementación
constructor Create(AOwner: TComponent)
Los componentes ADO de acceso a datos tienen una propiedad llamada CommandTimeout que indica la cantidad de segundos que tiene un determinado componente para completar una operación, si la misma se excede de ese tiempo la aplicación dará un error de timeout. En este caso está seteada a 360 segundos = 6 minutos.
constructor TprxADOQuerySelect.Create(AOwner: TComponent); var vGuid: TGUID; begin inherited Create(AOwner); if csDesigning in ComponentState = False then begin FSQLX := TStringList.Create; CommandTimeout := 360; Ffbn_parser_object := Tfva_parser_fbn.Create(Self); // Toma GUID... CreateGUID(vGuid); FGUID := GUIDToString(vGuid); end; end;
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 del dataset llamado First 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 del dataset llamado Prior 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 del dataset llamado Next 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 del dataset llamado Last 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; aSilent: Boolean = False): Boolean
Ejecuta una sentencia SELECT usando:
- aSQLCommand es el comando SQL a ejecutar como un string.
- aSilent cuando se setea a 0 el componente dará un error si algo falla, cuando se setea a 1 el mensaje de error no será visible, pero se informará al componente que llamó a la función para que lo procese.
Retorna True si pudo ejecutar la sentencia, False sino.
Ejemplo del comando:
SELECT FCODIGO, FDESCRIPCION FROM CUENTA
function Select(aStrings: TStrings; aSilent: Boolean = False): Boolean
Similar anterior, pero recibe una lista de strings que componen el comando SQL.
function SelectRecordCount(aSQLCommand: String; aSilent: Boolean = False): Integer
Ejecuta una sentencia SELECT y retorna la cantidad de registros, usa:
- aSQLCommand es el comando SQL a ejecutar como un string.
- aSilent cuando se setea a 0 el componente dará un error si algo falla, cuando se setea a 1 el mensaje de error no será visible, pero se informará al componente que llamó a la función para que lo procese.
function SelectRecordCount(aStrings: TStrings; aSilent: Boolean = False): Integer
Similar anterior, pero usa una lista de strings para el comando.
function SelectFieldValue(aSQLCommand: String; aFieldName: String): Variant
Dado un comando SQL aSQLCommand, lo ejecuta y retorna el valor del campo aFieldName.
El valor de retorno es Variant indicando que puede ser cualquier cosa:
- Un string.
- Un número.
- Una fecha.
- Etc.
function SelectFieldValue(aStrings: TStrings; aFieldName: String): Variant
Similar anterior pero recibe una lista de strings que componen el comando.
procedure SelectToList(aComando: String; aCampo: String; aLista: TStrings)
Ejecuta el comando aComando y retorna el valor del campo aCampo para cada registro en una lista TStrings.
Por ejemplo, la sentencia:
SELECT TOP 4 * FROM CUENTA ORDER BY FCODIGO
Que retorna:

Llamado para el campo FCODIGO guardaría los siguientes valores en la lista:
11101001 11101002 11101003 11101004
Ejemplo del comando:
SELECT FCODIGO , FDESCRIPCION FROM CUENTA