Skip to content

jorgeb77/ConsultaSQLResponsive

Repository files navigation

🔍 Consulta Datos del Padrón

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.


📦 Archivos del Proyecto

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

🚀 Cómo Ejecutar

  1. Abre Delphi 13.1 Florence
  2. File > Open Project
  3. Selecciona: Padron.dpr
  4. Configura el archivo Conexion.ini con los datos de tu servidor
  5. Presiona F9 (Run)

🎮 Funcionalidades

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


🔎 Uso del Comodín

JORGE        → Busca exactamente "JORGE"
%JORGE       → Busca cualquier nombre que contenga "JORGE"
%JORG%       → Busca cualquier nombre que contenga "JORG"

⚙️ Configuración de Conexión

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ña

🗄️ Estructura de la Tabla

La 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
)

🧵 Arquitectura de Hilos

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

❌ Cancelación de Consulta

Al presionar Cancelar durante una consulta activa:

  1. FTareaAtual.Cancel — señaliza el hilo para que se detenga
  2. 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.


📅 Filtro de Fechas

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

🛠️ Tecnología

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 TTaskSystem.Threading
Cronómetro TStopwatchSystem.Diagnostics
Archivos TPath, TFileSystem.IOUtils

📝 Notas Técnicas

Thread-Safety

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.

Imágenes BLOB

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).

Conexión configurable

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

About

Consulta con hilos (clase TTask)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages