Открытие конекта к БД через скрипты

отредактировано April 2007 Раздел: FastReport 4.0
Использую свои компоненты для доступа к БД.
Установления свойства
Connected := True
вызывает ошибку, т.к. параметры конекта указываются после и на момент установки свойства ещё не загружены. По этой причине открытие конекта вешаю на вызов скриптов
begin  DB2Database1.Connected:=True;
end.
.
При открытии отчёта всё работает на ура, но проблемы начинаются при открытии редактора, дело в том, что
// unit frxClass line 8627

function TfrxReport.PrepareReport(ClearLastReport: Boolean = True): Boolean;
...
    try
      if Assigned(FOnBeginDoc) then
        FOnBeginDoc(Self);
      if PrepareScript then
      begin
{$IFNDEF FR_VER_BASIC}
        if FScript.Statement.Count > 0 then
          FScript.Execute;      // <--- вот здесь происходит вызов скриптов, т.е. коннект к базе устанавливается
{$ENDIF}

...
    if FEngineOptions.DestroyForms then
    begin
      ErrorsText := FErrors.Text;
      TempStream.Position := 0;
      FReloading := True;
      try
//        if FEngineOptions.ReportThread = nil then
          LoadFromStream(TempStream);   // <--- здесь происходит перезагрузка отчёта, т.е. старый прибивается вместе с коннектом, и загружается новый
// но т.к. вызова скрипта не происходит конект не поднимается
      finally
        FReloading := False;
        ReportOptions.Password := SavePwd;
      end;
      TempStream.Free;
      FErrors.Text := ErrorsText;
    end;
  end;

...
end;
В результате при открытии в редакторе валятся ошибки конекта

Сейчас в RunTime выполняю
DestroyForms := False;
заработало вроде...
На что может повлиять DestroyForms? могут-ли из-за этого возникнуть не приятные эффекты?

Комментарии

  • отредактировано April 2007
    Я тоже как-то сталкнулся с подобной проблемой когда писал свои компоненты доступа к БД.
    Помогло изменение последовательности обявлений свойcтв для класса TfrxXXXDatabase.
    Например:
      published
        property LoginPrompt;
        property Server: String read GetServer write SetServer;
        property Port: Integer read GetPort write SetPort;
        property Username: String read GetUsername write SetUsername;
        property Password: String read GetPassword write SetPassword;
        property Charset: String read GetCharset write SetCharset;
        property Basename: String read GetBasename write SetBasename;
        property Connected;
      end;
    
    Свойство Connected в конце.
    После этого ошибка перестала появляться.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.