Я пытаюсь перенести свое приложение из ADO в FireDAC. Я использую Microsoft SQL Server. Мой сервер базы данных был установлен с помощью сортировки SENSITIVE CASE, и база данных была создана с помощью сортировки INSENSITIVE CASE. Я сделал эту конфигурацию, потому что у моих custumers такая конфигурация. Но когда я пытался мигрировать в FireDAC, драйвер FireDAC (MSSQL) просматривает сортировку базы данных и меняет свойство "имя базы данных" на верхний регистр. После этого многие вещи не работали, потому что FireDAC не нашел "имя базы данных" в sysdatabase. Можно ли отключить эту функцию, которая изменит свойство "имя базы данных" ?
Delphi Firedac - проблема с регистром
Ответ 1
Я предполагаю, что вы ищете параметр MetaCaseInsCat. Попытайтесь отключить автоматическое определение чувствительности к регистру каталогов и настройте его на нечувствительность к регистру:
...
FDConnection1.Params.Add('MetaCaseInsCat=True');
FDConnection1.Connected := True;
Ответ 2
Я нахожу, что FireDAC использует преобразование в верхнем регистре ansi для доступа к базе данных, что, в свою очередь, вызывает проблемы с MSSQL. В моем случае это было турецкое. Я нашел, что исправление будет легким. В OnBeforeConnect
TFDConnection я использовал:
Params.Database := TRUpperCase(Params.Database);
Где TRUpperCase
- это функция, которая правильно преобразует турецкие символы в верхний регистр (например, я в İ вместо я в I).
Ответ 3
Это не прямой ответ на OP, но он может помочь будущему программисту, подобному мне, который сталкивается с проблемой чувствительности к регистру в FireDAC
Я использую FireDAC с MSSQL. Чтобы использовать "LIKE" в TFDQuery Filter в режиме, отличном от случая: TFDQuery.FilterOptions
procedure TFDQuery_MyVersion.SetFilterText(const Value: string);
begin
FilterOptions := [TFilterOption.foCaseInsensitive];
inherited SetFilterText(TOldDatabaseSystemToMSSQL.Filter(Value));
end;