Bueno, no soy un experto en Firebird pero a ver si puedo dar respuesta a tus peguntas. Seguro que algún maestro como los llamas tú me corrige, pero me arriesgo.
Cita:
|
Empezado por Caral
Consulta 1:
Código SQL [-]
QTemp.SQL.Text := 'Select CodUsuario From Usuarios WHERE Graficar = True'; Graficar es un campo boolean, por eso esta el true, la base de datos firebird lo cambia por un campo varchar y lo cambia a T.
Pregunta:
Como hago esta sentencia en delphi con ese tipo de campo (varchar).
|
Al ser varchar, se trata igual que un campo caracter, es decir
Código SQL
[-]
QTemp.SQL.Text := 'Select CodUsuario From Usuarios WHERE Graficar =' + QuotedStr('T');
Lo unico es que por lo que conozco, para un campo de un solo caracter no es lo más aconsejable el tipo varchar, ya que varchar optimiza el tamaño que ocupa ese campo en disco. En este caso, poco va a optimizar.
Cita:
|
Empezado por Caral
Consulta 2:
Código SQL [-]
SELECT OrdenProd.CodOrden, Clientes.NombreCliente, OrdenProd.FechaInicio, OrdenProd.FechaRequerido, OrdenProd.FechaFinal, OrdenProd.OrdenCompra, OrdenProd.CodUsuario, OrdenProd.Prioridad,
IIf([Descripcion] Is Null,"Creación de Orden",[Descripcion]) AS Estacion, OrdenProd.CodCliente, OrdenProd.Enrutada, OrdenProd.Comentarios
FROM (Clientes RIGHT JOIN OrdenProd ON Clientes.CodCliente = OrdenProd.CodCliente) LEFT JOIN (OrdenProdItem LEFT JOIN Estaciones ON OrdenProdItem.Estacion = Estaciones.EstacionID) ON OrdenProd.CodOrden = OrdenProdItem.CodOrden
GROUP BY OrdenProd.CodOrden, Clientes.NombreCliente, OrdenProd.FechaInicio, OrdenProd.FechaRequerido, OrdenProd.FechaFinal, OrdenProd.OrdenCompra, OrdenProd.CodUsuario, OrdenProd.Prioridad,
IIf([Descripcion] Is Null,"Creación de Orden",[Descripcion]), OrdenProd.CodCliente, OrdenProd.Enrutada, OrdenProd.Comentarios
ORDER BY OrdenProd.CodOrden DESC;
Bueno aqui se complica mas la cosa.
1-Firebird no hacepta ( [] corchetes )., se cambian a no se necesitan?
2-Firebird no acepta ( IIF Is Null ), Con que se cambian ?
|
Creo que efectivamente no acepta corchetes. Creo aunque no estoy seguro que puede ser el caracter " ó ' cuando hay campos con espacios en el nombre. Si no hay espacios, simplemente se quitan.
Firebir acepta iif como atajo para la estructura ( sacado del manual )
Código SQL
[-]CASE
WHEN condicion THEN valorverdadero ELSE valor falso
END
En tu caso te quedaría
iif(Descripcion=NULL,'Creación de Orden',Descripcion)
Cita:
|
Empezado por Caral
Consulta 3:
Código Delphi [-]
AQItems.SQL.Text:=
'SELECT OrdenProdItem.CodOrdenItem AS Línea, OrdenProdItem.CodParte AS Código, '+
'Articulos.Descripcion AS Descripción, Articulos.Categoria AS Categoría, Articulos.SubCategoria AS [Sub Categoría], OrdenProdItem.NumSerie AS [# Pieza],
IIf([EnProceso],"SI","NO") AS [En Proceso?] '+
'FROM OrdenProdItem, Articulos, Estaciones '+
'WHERE (((OrdenProdItem.CodOrden)=[COD]) AND ((OrdenProdItem.CodParte)=[Articulos].[CodParte]) AND ((Estaciones.Descripcion)=[EST]) AND ((OrdenProdItem.Estacion)=[Estaciones].[EstacionID])) '+
'ORDER BY OrdenProdItem.CodOrdenItem; ';
Aqui el problema es casi el mismo:
1- Firebird no acepta ( IIF Is Null ).
2- Tanto COD como EST, son parametros que estan incluidos en parameters del query, firebird no los reconoce.
Bueno tengo mas, pero con esto ya me medio guio y tengo para un rato.
Nota: en ibexpert he hecho ya las consultas, pero o no me salen los datos del todo o me da muchos errores.
Me ayudais por favor.
Saludos
|
En esta tercera, la primera está contestada anteriormente, y la segunda, imagino que tendrás que cambiar la consulta para poner parámetros, que por lo que te he leido, hasta contestas como un maestro al respecto
Espero que te sirva de ayuda el rollo patatero que te he metido.
Saludos