Для отображения в DBGrid результатов запроса ZQuery с MSSQL:
1. Копируем файлы ZAbstractRODataset.pas, ZComponent.inc, Zeos.inc в папку проекта.
В ZComponent.inc меняем {$I ../Zeos.inc} на {$I Zeos.inc}.
В ZAbstractRODataset.pas меняем
- Код: Выделить всё
if doOemTranslate in FOptions then
begin
if ToOem then
CharToOem(Src, Dest)
else OemToChar(Src, Dest);
Dest[Result] := #0;
end
на
- Код: Выделить всё
if doOemTranslate in FOptions then
begin
if ToOem then
s := UTF8Decode(Src)
else
s := UTF8Encode(Src);
StrCopy(Dest, PChar(s));
Result := StrLen(Dest);
Dest[Result] := #0;
end
2. Создаем обработчик события AfterOpen ZQuery:
- Код: Выделить всё
var
i: integer;
begin
for i := 0 to DataSet.FieldCount - 1 do
if DataSet.Fields[i] is TStringField then
(DataSet.Fields[i] as TStringField).Transliterate := True;
end;
Без этого работать не будет, так как в Lazarus по умолчанию Transliterate = False.
3. После этого свойство ZQuery Options doOemTranslate используем для перекодировки ANSI в UTF8.
Lazarus 0.9.29 FPC 2.4.3 Win32