Aplicación de escritorio desarrollada en Delphi 13.1 Florence que permite realizar consultas SQL en tablas con muchos registros (1 millón ó más) contra una base de datos SQL Server, usando hilos de ejecución asíncronos con la clase TTask para mantener la interfaz de usuario siempre respondiendo durante las consultas.
Padron.dpr - Proyecto principal
U_ConsultaPadron.pas - Formulario principal
U_ConsultaPadron.dfm - Diseño del formulario
Conexion.ini - Parámetros de conexión a SQL Server
README.md - Este archivo
- Abre Delphi 13.1 Florence
- File > Open Project
- Selecciona:
Padron.dpr - Configura el archivo
Conexion.inicon los datos de tu servidor - Presiona F9 (Run)
✅ Búsqueda por nombre, primer apellido y segundo apellido
✅ Comodín % al inicio del texto para búsquedas parciales
✅ Filtro por rango de fechas de nacimiento
✅ Filtro por sexo (Ambos / Masculino / Femenino)
✅ Foto del cedulado leída desde campo BLOB (datetime)
✅ Modo SQL libre para ejecutar queries personalizados
✅ Indicador animado durante la consulta
✅ Tiempo de duración de cada consulta (hh:nn:ss)
✅ Cancelación real de la consulta en curso
✅ Protección al cerrar si hay una consulta activa
JORGE → Busca exactamente "JORGE"
%JORGE → Busca cualquier nombre que contenga "JORGE"
%JORG% → Busca cualquier nombre que contenga "JORG"
Crear el archivo Conexion.ini en la misma carpeta del ejecutable:
[Conexion]
Servidor=NOMBRE_SERVIDOR\INSTANCIA
Database=NOMBRE_BASE_DE_DATOS
Usuario=usuario_sql
Password=contraseñaLa aplicación consulta la tabla Cedulados con la siguiente estructura mínima esperada:
CREATE TABLE Cedulados (
MUN_CED VARCHAR(3),
SEQ_CED VARCHAR(7),
VER_CED VARCHAR(1),
CEDULA VARCHAR(13),
NOMBRES VARCHAR(100),
APELLIDO1 VARCHAR(50),
APELLIDO2 VARCHAR(50),
FECHA_NAC DATETIME,
SEXO CHAR(1), -- 'M' o 'F'
TELEFONO VARCHAR(20),
Foto IMAGE
)La consulta corre en un hilo secundario con TTask. Los valores de la UI se capturan antes de iniciar el hilo para garantizar thread-safety.
Hilo Principal Hilo Secundario (TTask)
────────────────── ──────────────────────────────
Captura valores de UI → Ejecuta query en SQL Server
Inicia TTask → Construye y lanza QryPadron.Open
Sigue respondiendo... Termina consulta
← TThread.Queue → actualiza UI
Al presionar Cancelar durante una consulta activa:
FTareaAtual.Cancel— señaliza el hilo para que se detenga- La UI limpia los campos y detiene el indicador de animación
⚠️ Si intentas cerrar la app con una consulta en curso, el sistema lo bloquea y te avisa para que la canceles primero.
Las fechas se envían a SQL Server en formato YYYYMMDD (ISO 8601), independientemente de la configuración regional del servidor. El filtro usa >= y < en lugar de BETWEEN para incluir correctamente todos los registros del último día:
-- Generado internamente
AND FECHA_NAC >= '20260601'
AND FECHA_NAC < '20260701' -- día siguiente al límite superior| Componente | Detalle |
|---|---|
| Lenguaje | Delphi 13.1 Florence |
| UI | DevExpress VCL (Ribbon, Grid, controles cx) |
| Base de datos | SQL Server 2016 o superior |
| Acceso a datos | FireDAC |
| Hilos | TTask — System.Threading |
| Cronómetro | TStopwatch — System.Diagnostics |
| Archivos | TPath, TFile — System.IOUtils |
Todos los valores de controles VCL (textos, fechas, opciones) se capturan en el hilo principal en variables locales antes de crear el TTask. Ningún acceso a la UI ocurre desde el hilo secundario.
Las fotos almacenadas en SQL Server se leen mediante TWICImage y se asignan al control TcxImage. Se cargan automáticamente al navegar entre registros en el grid (AfterScroll).
Los parámetros de conexión se leen desde Conexion.ini usando System.IOUtils, sin rutas hardcodeadas en el código fuente.
Desarrollado con ❤️ en Delphi 13.1 Florence