Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Consulta SQL con "banderas" (https://www.clubdelphi.com/foros/showthread.php?t=38628)

sitrico 21-12-2006 00:44:59

Consulta SQL con "banderas"
 
Estoy diseñando una aplicación y se me ocurrio usar 2 tablas, una con una lista de eventos con un campo de status (IDStatus) y otra con con el valor del IdStatus y su descripcion, algo más o meno así:

Tabla1:

Código Delphi [-]
Nombre          IDStatus
VarChar(20)    Integer
--------------------------
Juan              1
Pedro             2
Jose              3
...

Tabla2
Código Delphi [-]
IDStatus         Descripcion
Integer          VarChar(20)
--------------------------
1                  Citado
2                  Cita Adelantada
4
8
16
....

El problema es que en el caso de la tabla1 el valor (Jose,3) el 3 DEBE indicar que el status es 1 y 2 (en realidad 1 y 2 lógico (1+2))

La consulta seria algo como:
Código SQL [-]
Select * from tabla1 a, Tabla2 B
Where a.IdStatus AND b.IdStatus = b.IdStatus

Temo que no se pueda :( pero por lo menos quisiera intentarlo.

Gracias

PD por ahora pruebo "conceptos" con tablas paradox pero la idea es usar firebird, pero aun no lo manejo tanto como quisiera :mad: .

Lepe 21-12-2006 13:43:18

En paradox pincho, en Firebird, es cuestión de usar una UDF que ya está hecha:
Cita:

Empezado por langref.pdf of Interbase 6
bin_and
Returns the result of a binary AND operation performed on the two input values.
DECLARE EXTERNAL FUNCTION BIN_AND
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT ’IB_UDF_bin_and’ MODULE_NAME ’ib_udf’;

Por tanto quedaría algo así como:
Código SQL [-]
Select * from tabla1 a, Tabla2 B
Where bin_and(a.IdStatus, b.IdStatus) = b.IdStatus

No he pensado mucho en el tema, simplemente he encontrado la función que pedías.

Saludos

sitrico 21-12-2006 18:04:20

Gracias lepe, aparentemente la función hace exactamente lo que necesito, aunque por lo que lei esta en las UDF (no se exactamente que es eso :o ) parece que hay que instalar la librería ó llamarla desde el firebird eso es lo de menos.

Gracias nuevamente

Lepe 21-12-2006 19:49:38

Instala IB Expert (version personal gratuita), es el equivalente al Database Desktop (bueno... no se puede hacer comparaciones... pero bahh, queda dicho).

Se trata de incluir todas las funciones de la biblioteca ib_udf.sql a tu base de datos.
Desde IB Expert, con tu base de datos abierta, abres el "Script Executive" abres el archivo de la carpeta donde tienes instalado Firebird\UDF\ib_udf.sql clic Pulsas en "Run Script" y listo ya tendrás disponibles 26 funciones adicionales en Firebird.

UDF = User Defined Functions. Tú mismo en delphi, creas una dll con un par de funciones dentro y después las exportas, creando por ejemplo esa función bin_add.

Saludos


La franja horaria es GMT +2. Ahora son las 20:32:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi