• 0
Antonyan

FastReport +DLL - проблема

Вопросы

Добрый день, коллеги !

 

Неожиданно столкнулся с проблемой при использовании FastReport5 в XE7.

 

Суть :

Создаю отчет test.fr3, в котором в одно единственное поле из БД выводится информация об адресе. 

Создаю VCL проект, кидаю на форму :

 

FDConnection1,

Temp: TFDQuery,

FDGUIxWaitCursor1

 

Далее, коннект к базе FB.

Под кнопкой пишу код:

 

procedure TForm3.Button2Click(Sender: TObject);
var
   frxReport1          : TfrxReport;
   frxDBDataset1    : TfrxDBDataset;
begin

  frxReport1:=TfrxReport.Create(nil);
  frxDBDataset1:=TfrxDBDataset.Create(nil);
  frxDBDataset1.UserName:='Rekv';
  frxDBDataset1.DataSet:=Temp;

 

{ // В VCL - работает без этих строк, в DLL - разумеется, нет.
  frxReport1.DataSets.Clear;
  frxReport1.DataSets.Add(frxDBDataset1);
  frxReport1.DataSet:=frxDBDataset1;
  frxReport1.DataSetName:=frxDBDataset1.UserName;
}


      frxReport1.LoadFromFile('e:\test.fr3');
   

      frxReport1.ShowReport(True);

 

end;

 

Этот код работает прекрасно, отчет формируется, информация из БД присутствует в отчете. Вопросов к нему нет.

Проблемы начинаются, когда я пытаюсь использовать формирование и вызов отчета из DLL

 

Вызов : PrintData(MyQuery);

 

function PrintData(Temp: TFDQuery): Integer; stdcall;
var
   frxReport1        : TfrxReport;
   frxDBDataset1  : TfrxDBDataset;

begin

 

  Result := 0;

  frxReport1:=TfrxReport.Create(nil);
  frxDBDataset1:=TfrxDBDataset.Create(nil);


  frxDBDataset1.UserName:='Rekv';
  frxDBDataset1.DataSet:=Temp;


  frxReport1.DataSets.Clear;
  frxReport1.DataSets.Add(frxDBDataset1);
  frxReport1.DataSet:=frxDBDataset1;

  frxReport1.DataSetName:=frxDBDataset1.UserName;

  frxReport1.LoadFromFile('e:\test.fr3');

  frxReport1.ShowReport(True);

 

end;
 

 

В итоге, отчет формируется и запускается, информация из БД присутствует в отчете, но возникает сообщение об ошибке :

 

Были обнаружены следующие ошибки :  Memo1 : Поле не найдено : Rekv."Adress"

 

Как победить эту ошибку ?

Изменено пользователем Antonyan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 ответов на этот вопрос

  • 0

Прошу прощения, вы указали что проект под VCL, а данных форум для FMX. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Прошу прощения, вы указали что проект под VCL, а данных форум для FMX. 

 

Проект под Win писал на FMX, для печати отчетов использую FR5, вызываемый из Dll

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

У вас в начале кода так и написано: Создаю VCL проект, кидаю на форму. Простите за ламмерство или вы меня совсем запутали. Каким образом вы вызываете  fastreport из dll? То есть вы не используете специально написанный fastreport FMX? Или я чего-то не догоняю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

У вас в начале кода так и написано: Создаю VCL проект, кидаю на форму. Простите за ламмерство или вы меня совсем запутали. Каким образом вы вызываете  fastreport из dll? То есть вы не используете специально написанный fastreport FMX? Или я чего-то не догоняю?

 

Добрый вечер!

 

Попробую пояснить. Переписываю свой старый проект под Win7, 8, 10 по просьбе заказчика. После раздумий - решил писать под Win на FMX. FastReport в XE7 представлен только для VCL, под FMX он отсутствует (могу ошибаться, но где то попадалось, что под FMX он существует в виде отдельного платного пакета, хотя в сети есть и ломаные. Ни то, ни другое меня не устраивает). Поэтому, для формирования отчета создал Dll, из которой успешно вызываю FR. В принципе, свой вопрос я решил, но не так как мне бы хотелось. Интересно разобраться, где и что я упустил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Немного понятно стало. Я не силен в вызовах из dll. Ошибка ссылается на memo, оно где?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Немного понятно стало. Я не силен в вызовах из dll. Ошибка ссылается на memo, оно где?

 

Memo - так звучит в сообщении об ошибке. В самом отчете данные из БД выводятся в TFrxMemoView, связанный с набором данных через frxDBDataset1. Вот и любопытно, почему один и тот же код в Application.VCL работает отлично, а в DLL отрабатывает, но выводит указанную ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Выводит ошибку, но все таки вставляет в мемо все правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Выводит ошибку, но все таки вставляет в мемо все правильно?

 

Именно ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну забейте на ошибку))) try except  и тд)))

 

PS возможен глюк FR. На днях пытался выяснить почему в FR RMX не работает межстрочный интервал в memo. И что вы думаете? Ответили, что мол он еще не реализован!!!!!! Я просто охренели от ответа)))) Причем параметр есть (межстрочного интервала), а при смене его вообще ничего не происходит! И вдобавок ответили, что в новой версии (якобы через пару дней) добавят. Я считаю, что это глюк чистой воды, но они не признаются))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну забейте на ошибку))) try except  и тд)))

 

PS возможен глюк FR. На днях пытался выяснить почему в FR RMX не работает межстрочный интервал в memo. И что вы думаете? Ответили, что мол он еще не реализован!!!!!! Я просто охренели от ответа)))) Причем параметр есть (межстрочного интервала), а при смене его вообще ничего не происходит! И вдобавок ответили, что в новой версии (якобы через пару дней) добавят. Я считаю, что это глюк чистой воды, но они не признаются))

 

Вопрос то этот решился через костыль. У них есть штатный режим "тишины", когда ошибки копятся, но на экран не выводятся. Я все же думаю, где то есть мое упущение, да и любопытство разбирает ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

1. Поробуйте поменять местами строки в Длл

frxDBDataset1.UserName:='Rekv';

frxDBDataset1.DataSet:=Temp;

2. Как вариант вызвать Designer в Длл и просмотреть в нем какие там получились Датасеты и поля (но это смотря какая версия фастрепорта)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

1. Поробуйте поменять местами строки в Длл

frxDBDataset1.UserName:='Rekv';

frxDBDataset1.DataSet:=Temp;

2. Как вариант вызвать Designer в Длл и просмотреть в нем какие там получились Датасеты и поля (но это смотря какая версия фастрепорта)

 

По п.1 - попробую, но маловероятно что поможет, а вот п.2 - интересный вариант, спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От ElenaS.
      Друзья! Рады сообщить, что уже вот-вот, на днях генератор отчетов FastReport FMX получит поддержку RAD Studio 10.2 Tokyo! 
      А еще хотим представить свое инновационное решение - FastReport Desktop Green Edition без функции печати! https://www.fastreport.ru/ru/news/385/
      Мы бы не знали о проблеме постоянных заминов бумаги и заправки принтеров без вашего фидбека! Спасибо за вдохновение! 
       
    • От ElenaS.
      Глобальная оптимизация: друзья, в новой версии FastReport FMX изменения коснулись всего: от ядра отчетов до вывода текста на экран.
      Подробнее обо всех изменениях можно почитать на сайте. 
      Если вы еще не обновились, скорее же обновляйтесь! 
      Напоминаю, что если вы испытываете трудности в работе с нашими компонентами - мы будем рады помочь вам на страницах форума!
    • От ElenaS.
      Друзья! Fast Reports и я лично поздравляем вас с наступающими праздниками! 
      Искреннейше желаем вам безбажного года и интересных проектов!
      А еще, в связи с праздниками у нас скидка на ВСЕ продукты аж 50% вот здесь! С нетерпением ждем вас в стройных рядах наших кастомеров!
      Напоминаю, что если вы испытываете трудности в работе с нашими компонентами - мы будем рады помочь вам на страницах форума!
      Команда FR
    • От ElenaS.
      На днях мы зарелизили новую версию FastCube для FireMonkey!      "Буду краток" ©:    Немного о том, что такое FastCube:   FastCube - это компонент для OLAP анализа. Он встраивается в интерфейс вашего приложения, не требует квалификацию программиста для использования и позволяет создавать срезы данных "на лету"   Подробнее о кубике можно почитать здесь.    Новая версия теперь поддерживает Embarcadero Rad Studio 10 Seattle (Delphi/C++Builder).  Полный список изменений можно посмотреть здесь.  
    • От Brovin Yaroslav
      Кроссплатформенный генератор отчетов с широчайшими возможностями для Apple Mac OS X и Microsoft Windows. Совместим с Embarcadero RAD Studio XE2. Генератор отчетов FastReport FMX — первое кросс-платформенное решение для внедрения Business Intelligence в программное обеспечение на базе среды разработки Embarcadero FireMonkey (Delphi для MS Windows и Apple Mac OS X).
       
      Автор: Fast Reports Inc
      Тип лицензии: Commercial
      Ссылка: http://www.fast-report.com/ru/product/fast-report-fmx/
      Скачать: URL
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу