Cita:
Empezado por borlandpablo
Buenas, tengo creado 2 campos calculado en una tabla DBGrid. En el evento OnCellTitle del DBGrid, lo tengo programado para que me ordene por campos, pero cuando lo ordeno por un campo calculado me da error. Os dejo lo que tengo de código:
Código:
void __fastcall TXCatalogos::DBGrid1TitleClick(TColumn *Column)
{
AnsiString FName = Column->FieldName;
XDatos->QCatalogos->Close();
XDatos->QCatalogos->SQL->Text = "SELECT * FROM Catalogo ORDER BY " + FName;
XDatos->QCatalogos->Open();
}
|
Hola borlandpablo.
Y es totalmente lógico ya que el campo no existe en la tabla contra la que efectuas la consulta SQL. Una solución, pero que depende de si tu RDBMS lo permite, es declarar el campo calculado en la creación de la tabla.
Por ejemplo en
Firebird:
Código SQL
[-]
CREATE TABLE CLIENTES (
ID INTEGER NOT NULL,
APELLIDO VARCHAR(15)
NOMBRE VARCHAR(15),
APELNOM COMPUTED BY (APELLIDO || ' ' || NOMBRE),
...
Así creada, no tendrías ningún problema en ejecutar la sentencia:
Código SQL
[-]
SELECT * FROM CLIENTES
WHERE APELLIDO LIKE 'A%'
ORDER BY APELNOM
Pero desconozco que manejador de bd estés usando y si ofrece esa característica.
Saludos.
