Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FastReport4. Поключение внешней функции, Ошибка при печати отчета 
:(
    Опции темы
huminclouds
Дата 5.10.2010, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.7.2009

Репутация: нет
Всего: нет



Подключаю к отчету внешнюю функцию (представление числа прописью). Делаю все, как написано в мануале:
Код

function TForm1.frxReport1UserFunction(const MethodName: string;
  var Params: Variant): Variant;
begin
  if MethodName = 'NumToWords' then
    Result := NumToWords(Params[0]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  frxReport1.AddFunction('function NumToWords(num: String): String');
  frxReport1.ShowReport();
end;

В скрипте отчета, добавляю результат функции NumToWords в Memo:
Код

procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);                                   
begin
  Memo1.Text := NumToWords(IntToStr(<frxDBDataset1."TOTAL">));
end;

На что при построении отчета вылетает ошибка:
Цитата

Could not convert variant of type (Null) into type (OleStr)

Функция в Delphi работает на ура. Подскажите, пожалуйста, в чем причина ошибки.
PM MAIL   Вверх
Frees
Дата 6.10.2010, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Код

Memo1.Text := NumToWords(VarToStr(<frxDBDataset1."TOTAL">))

?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
huminclouds
Дата 6.10.2010, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.7.2009

Репутация: нет
Всего: нет



Ах, если бы все было так просто... Но дело совсем не в этом. Функция принимает параметр без ошибок. Ошибка возникает как раз на выходе. Как видно из текста ошибки, функция возвращает Null-значение независимо от параметра.
PM MAIL   Вверх
huminclouds
Дата 6.10.2010, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.7.2009

Репутация: нет
Всего: нет



Невнимательно я просто мануал проштудировал. 
Цитата

Имя метода должно быть в верхнем регистре
Код

function TForm1.frxReport1UserFunction(const MethodName: string;
  var Params: Variant): Variant;
begin
  if MethodName = 'NUMTOWORDS' then
    Result := NumToWords(Params[0]);
end;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.