Hola Delphitest.
Con seguridad que alguno de las columnas intervinientes tiene valor
NULL. Cualquier concatenación en el que intervenga una columna con valor
NULL, dará como resultado
NULL.
Poniendo previamente en
NULL un nombre de la tabla EMPLOYEE,
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT EMPNO, FIRSTNAME + '' '' + LASTNAME AS FULLNAME,');
SQL.Add('SALARY FROM EMPLOYEE');
Open;
end;
end;
el código anterior dá este resultado:
La solución para que no aparezcan líneas vacías es evaluar los valores de ambos campos. Dado que no uso
Access para mis trabajos, tuve que leer un poco para encontrar la equivalencia a la función
COALESCE que según leí es
SWITCH.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
const
SQLSTR = 'SWITCH(FIRSTNAME IS NULL, ''----'', FIRSTNAME IS NOT NULL, FIRSTNAME)'
+ '+'' ''+' +
'SWITCH(LASTNAME IS NULL, ''----'', LASTNAME IS NOT NULL, LASTNAME)';
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add(Format('SELECT EMPNO,%s AS FULLNAME, SALARY',[SQLSTR]));
SQL.Add('FROM EMPLOYEE');
SQL.Add(Format('ORDER BY %s',[SQLSTR]));
Open;
end;
end;
La diferencia luego de hacer click en Button1:
Saludos