Не совсем понял (вверху в постах), какое отношение имеют к кириллице символы ü, ö, ä . Я использую liteDac, скорее всего в UniDac так же:
Я кидаю на форму компонент TLiteUserFunction , в его событии OnExecute создаю следующий код:
procedure TDataModule2.LiteUserFunc_upcaseExecute(Sender: TObject;
Params: TDAParams; var ResultValue: Variant);
begin
ResultValue := AnsiUpperCase(TLiteUserFunction(Sender).Params.ParamByName('Value').AsString);
end;
А далее прямо в SQL коде, вставляю эту внешнюю функцию. Вот как пример:
select [mnn] from [vrem_for_grupp] where LiteUserFunc_upcase([mnn]) = ('''+trim(mn.ToUpper)+ ''')
И получается, параметры, которые передаю во внутрь я перевожу в верхний регистр прямо при передачи (в примере это mn.toUpper ), а внутри SQL, эти параметры в верхний регистр переводит внутренняя(внешняя) функция, в данном случае LiteUserFunc_upcase.