Zeos + mssql [Решено]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Zeos + mssql [Решено]

Сообщение alaken »

Посмотрев по форуму везде рекомендуют пользоваться Zeos. Послушался народной мудрости, тоже установил его себе
Проблема с авторизацией. Сервер mssql 7 настроен с использованием NT авторизации.
С какими параметрами нужно использовать TZConnection, чтобы авторизоваться?
Последний раз редактировалось alaken 16.07.2010 16:15:49, всего редактировалось 2 раза.
А.Н.
постоялец
Сообщения: 230
Зарегистрирован: 13.03.2010 11:23:58

Сообщение А.Н. »

Посмотрев по форуму везде рекомендуют пользоваться Zeos.

:mrgreen: :mrgreen: :mrgreen:
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Оказалось все просто
для доменной авторизации нужно оставлять поля User,Password пустыми

вторые грабли на моем пути, это отображение русских букв, данные из базы отображаются в виде вопросов (??????? ????)
как это решить?
serg48
новенький
Сообщения: 12
Зарегистрирован: 21.03.2010 14:46:07

Сообщение serg48 »

alex_rain
новенький
Сообщения: 26
Зарегистрирован: 12.02.2010 05:56:32
Откуда: Russia

Сообщение alex_rain »

Для отображения в 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
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Код: Выделить всё

    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
s - не определена
описал как

Код: Выделить всё

var s: string;
все заработало.
СПАСИБО.
alexkam
постоялец
Сообщения: 152
Зарегистрирован: 07.09.2009 20:03:59

Сообщение alexkam »

alaken писал(а):Оказалось все просто
для доменной авторизации нужно оставлять поля User,Password пустыми

вторые грабли на моем пути, это отображение русских букв, данные из базы отображаются в виде вопросов (??????? ????)
как это решить?


Не удалось подключиться в домене с пустыми User и Password. Какую версию Zeos используете. Я использую Zeos 7.0.0 alpha.
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

использую версию 6.6.6
alexkam
постоялец
Сообщения: 152
Зарегистрирован: 07.09.2009 20:03:59

Сообщение alexkam »

При открытии ZQuery ошибка:

errmssql.jpg


Что можно сделать?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Это не ошибка Zeos.
Используется старая версия ntwdblib.dll не поддерживающая ntext.
alexkam
постоялец
Сообщения: 152
Зарегистрирован: 07.09.2009 20:03:59

Сообщение alexkam »

Где взять новую?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Самая последняя версия из пакета SQL 2000 SP4. В более новые не входит (Microsoft отказалась от поддержки DB-Lib).
Правда я не уверен, что она тоже будет корректно работать с ntext (сам данным типом не пользуюсь). А вообще попробуйте отказаться от ntext (если возможно) или переходите на ODBC.

Добавлено спустя 57 секунд:
версия ntwdblib.dll из SQL 2000 SP 4 - 2000.80.2039.0
Ответить