Hola,
asi, de primeras, se me ocurre hacer dos consultas, yo trabajo con Adoquerys.
Código Delphi
[-]
Adoquery1.Close;
Adoquery1.SQL.Text:='SELECT * FROM tabla where fecha=#17/01/2012#';
Adoquery1.Open;
if Adoquery1.IsEmpty then
begin
Adoquery1.Close;
Adoquery1.SQL.Text:='SELECT * FROM tabla where fecha<=#17/01/2012# ORDER BY fecha DESC';
Adoquery1.Open;
end;
showmessage(Adoquery1.FieldByName('Codigo').AsString);
Espero que te sirva de ayuda.
Saludos.