Uniface u_where: Selección de BD simple

Descubre qué es u_where en Uniface 10.4, cómo crear filtrados de base de datos independientes del gestor, su sintaxis, ejemplos prácticos y buenas prácticas.

28 sept 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

En este artículo explicamos de forma clara y práctica qué es y cómo usar u_where en Uniface 10.4 para crear selecciones de base de datos independientes del gestor. u_where permite filtrar registros de forma portable entre diferentes DBMS, lo que facilita desarrollar aplicaciones robustas y mantenibles.

Qué es u_where y por qué usarlo: u_where es una cláusula que se resuelve en tiempo de compilación, a diferencia de u_condition que se evalúa en tiempo de ejecución. Al resolverse en compilación, las expresiones pueden aprovechar optimizaciones propias del motor y reduce la sobrecarga durante la ejecución. Además u_where es DBMS independent, por lo que tu lógica de selección funcionará con distintos sistemas de base de datos sin cambios.

Sintaxis básica: read u_where (CAMPO operador valor) Por ejemplo read u_where (NAME = A*) donde el asterisco actúa como comodín según el perfil de búsqueda. Evita construir condiciones demasiado largas: u_where tiene un límite máximo de 8192 bytes para los criterios.

Operadores comunes expresados en palabras: menor que, mayor que, igual a, distinto de, mayor o igual que, menor o igual que, y lógico, o lógico. Recomendación práctica: escribe expresiones claras como read u_where ((NAME = A*) y (SALARY mayor o igual que 4975)) para mantener legibilidad y evitar caracteres que puedan ser interpretados como etiquetas.

Ejemplos prácticos: Ejemplo simple read u_where ((NAME = A*) y (SALARY mayor o igual que 4975)) Esto busca empleados cuyo nombre comienza por A y cuyo salario es igual o superior a 4975. Comparación entre campos de la misma entidad read u_where (PAY_BY_DATE.INVOICE menor que PAIDDATE.INVOICE) Cuando ambas columnas pertenecen a la misma entidad Uniface puede usar los valores de base de datos directamente. Uso de variables read u_where (FNAME = %%$name) El prefijo %% indica sustitución del valor de la variable global $name en tiempo de ejecución, lo que permite consultas dinámicas.

Funciones agregadas con selectdb: selectdb (ave(SALARY), count(NAME)) from EMPLOYEE u_where ((SALARY menor o igual que vAvgSalary) y (birthdate menor o igual que $date(01-01-1990))) to (AVERAGE.DUMMY, TOTAL.DUMMY) Esto calcula un promedio y un conteo y deposita los resultados en campos destino para su visualización o tratamiento posterior.

Reglas importantes: Lado izquierdo de la comparación debe ser siempre un campo de base de datos. Lado derecho puede ser un valor literal, otro campo o una variable. Si ambos campos pertenecen a la misma entidad se usan valores de base de datos; si pertenecen a entidades distintas se usan valores en memoria del componente. Si usas %% o funciones $ la evaluación empleará valores del componente.

Rendimiento y consideraciones por tipo de base de datos: En bases SQL modernas u_where suele ser muy eficiente y puede aprovechar índices secundarios. En bases de tipo record level la ejecución puede ser más lenta porque Uniface hace más trabajo en el componente; en esos casos solo se usan índices de clave primaria de forma automática. Evita condiciones muy largas y procura diseñar perfiles de búsqueda dentro de los límites que impone Uniface, por ejemplo las búsquedas individuales por campo se recortan a 512 bytes y los criterios completos a 8192 bytes.

Diferencias entre u_where y u_condition: u_where se procesa en compilación y es DBMS independent; u_condition se evalúa en tiempo de ejecución y también es portable, pero su comportamiento y optimización difieren. No conviene mezclarlas indiscriminadamente; elige u_where para condiciones que puedan resolverse antes de la ejecución y u_condition para filtros que dependan explícitamente del estado en tiempo de ejecución.

Errores frecuentes y buenas prácticas: recuerda el límite de tamaño 8192 bytes, evita depender de perfiles de campo excesivamente largos porque se truncan, y ten en cuenta que muchos caracteres de perfil son eliminados salvo comodines como asterisco y signo de interrogación que pueden tratarse de forma literal. Prueba y valida tus filtros con datos representativos y monitoriza tiempos de respuesta en cada DBMS objetivo.

Sobre Q2BSTUDIO: Somos Q2BSTUDIO, empresa especializada en desarrollo de software y aplicaciones a medida, con experiencia en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios de inteligencia de negocio y soluciones como power bi. Diseñamos y desarrollamos soluciones personalizadas que integran bases de datos, automatización y agentes IA para empresas que necesitan optimizar sus procesos y obtener valor de sus datos. Si buscas servicios de desarrollo de aplicaciones a medida visita nuestras soluciones de software a medida y si te interesa potenciar tus proyectos con IA descubre cómo trabajamos la inteligencia artificial para empresas.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Si necesitas adaptar u_where a un proyecto concreto o integrar búsquedas eficientes en tu arquitectura, Q2BSTUDIO puede ayudarte a diseñar la mejor estrategia técnica y a desarrollar la solución a medida que tu negocio necesita.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat