PDA

Ver la Versión Completa : Sql access a Firebird (Diferencias en las sentencias SQL)


Caral
26-12-2007, 23:34:33
Hola a todos.
Este hilo lo estoy haciendo para que queden plasmadas las dudas con relación a las diferencias que hay entre estas dos bases de datos (access y Firebird).
Estas diferencias en particular son en cuanto al uso del sql, el que varia en muchas cosas, algunas sencillas, otras no tanto.
He revisado mucha información en Internet, la verdad, como ya es usual las respuestas las he conseguido aquí.
Quiero hacer en cada post un comentario de un dato en particular.
Espero que los maestros que me están ayudando puedan ampliar esta referencia que seguro ayudara y motivara a mas de uno a hacer el cambio a Firebird.
Saludos

Caral
26-12-2007, 23:53:11
Esta sentencia es muy usada en access.
En access se haria de esta manera:
iif([tutambla.tucampo= #FA#],[Factura],[Consignación]) as tunombre.
Osea que si el campo es igual a FA tendríamos el valor verdadero (Factura) de lo contrario el falso (consignación).
Como ya aprendí, en firebird hay ciertas diferencias:
1- Para empezar Firebird SI acepta el uso de iif, por lo menos en Firebird 2.
2- No acepta el uso de corchetes [ ].
3- La opciones que darán el resultado verdadero o falso, tienen que estar entre comillas simples ' ';
4- No acepta #
Entonces viendo la sentencia anterior quedaría así en firebird:
iif(tutambla.tucampo= 'FA','Factura','Consignacion') as tunombre.
Cualquier comentario adicional, con gusto sera recibido.
Saludos

Caral
27-12-2007, 00:04:36
Este es otro comando que es usado para que devuelva la fecha actual en access.
Bueno como os habréis dado cuenta en Firebird no funciona.
Para eso están estas:
cast('NOW' as date)
Current_Date
En este hilo (http://www.clubdelphi.com/foros/showthread.php?t=51658) se habla mas al respecto, es en donde lo aprendí.
Saludos

Caral
27-12-2007, 00:11:09
Bueno este es otro que no reconoce firebird.
Esto se puede hacer de dos maneras, en este hilo (http://www.clubdelphi.com/foros/showthread.php?t=51695) se puede ver como.
Yo en mi caso use Max( ) as.
Funciono, perfectamente.
Saludos

jachguate
27-12-2007, 02:37:49
Esta sentencia es muy usada en access.
En access se haria de esta manera:
iif([tutambla.tucampo= #FA#],[Factura],[Consignación]) as tunombre.


Bien ha dicho ya Caral que esto puede hacerse de manera muy similar en firebird, haciendo uso de una función.

También podría lograrse usando puro SQL, valiéndose del operador case:


select case tutabla.tucampo
when 'FA' then 'factura'
when 'CO' then 'consignación'
else 'desconocido'
end as TuNombre
from TuTabla;


Cómo se ve... en el case, pueden incluirse mas opciones, no solo 2, como en el IIF.

Un pequeño aporte a este esfuerzo de Caral.

Hasta luego.

;)