LazReport скрипт

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

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

LazReport скрипт

Сообщение RusDeveloper » 15.07.2016 17:18:23

посмотрел функции доступные в LazReport-е. достаточно скудный выбор:
строковые:
-COPY
-STR
математические:
-INT
-ROUND
-FRAC
интерпретатор:
-еще 6 штук...

а как же функции конвертации целого числа в строку, строки в число, числа с плавающей точкой в строку и т.д. это все подключать через свои функции?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 18.07.2016 15:28:22

1. Функций больше на самом деле. Надо смотреть внимательней :-)
2. Можно подключить большой набор дополнительных функций из пакета lr_add_function.lpk (кинуть в проект компонент TlrAddFunctionLibrary)
3. Многие конвертации делаются на лету. В скрипте нет такой жёсткой типизации.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport скрипт

Сообщение RusDeveloper » 18.07.2016 17:35:30

1. установил lr_add_function.lpk и кинул TlrAddFunctionLibrary на модуль. ничего при редактировании шаблона не изменилось :( или должно измениться в run-time? и нужно шаблоны теперь в run-time редактировать?

2. Посмотрел в документации Редактор переменных (http://wiki.lazarus.freepascal.org/LazReport_Documentation#Adding_your_own_functions). Создать категорию и переменную ума хватило, а вот для выражения нет кнопки с тремя точками
У вас нет необходимых прав для просмотра вложений в этом сообщении.
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 19.07.2016 11:06:10

Всё будет в рантайме естественно.
Вот список функций и категорий
Все, за исключением последних трех категорий - из поставки LR + TlrAddFunctionLibrary
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport скрипт

Сообщение RusDeveloper » 19.07.2016 16:35:20

в run-time все то же самое, только на английском. т.е. те же функции и отсутствие кнопки с тремя точками для выражения... :( откуда Вы это окно вызвали? что-то оно и по дизайну не похоже на те, что у меня... или это такой вид под Linux? в любом случае остаются оба вопроса:
1) почему ничего не изменилось после установки lr_add_function.lpk и размещения TlrAddFunctionLibrary на модуле?
2) почему в Редакторе переменных отсутствует кнопка с тремя точками?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 20.07.2016 09:28:10

Какая версия лазаря?
У меня Lazarus 1.7 r52481:52722M FPC 3.1.1 x86_64-linux-gtk 2. Кажется в одной из промежуточных версий была поломана работа со списками в LR - функции не регистрировались.
Ну а теперь по пунктам:
1. Чтобы было по русски - надо включить русские языковые ресурсы.
2. В редакторе переменных кнопки вызова редактора функции нет. Честно говоря - я совсем не вижу необходимости в этом окне.
3. Интерфейс у меня GTK2 из Fedora 23 - насчёт линукса угадал :D
4. Окно - штатный редактор функций из редактора memo (см изображение)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport скрипт

Сообщение RusDeveloper » 20.07.2016 11:16:52

alexs писал(а):Какая версия лазаря?
У меня Lazarus 1.7 r52481:52722M FPC 3.1.1 x86_64-linux-gtk 2. Кажется в одной из промежуточных версий была поломана работа со списками в LR - функции не регистрировались.

Ааа... r52481 это ревизия Лазаруса, а что такое 52722M? Вы ж, наверное, что-то еще допиливали после выгрузки Лазаруса из СВН? И какая ревизия у ФПЦ?

alexs писал(а):Ну а теперь по пунктам:
1. Чтобы было по русски - надо включить русские языковые ресурсы.

Этот пункт не столь важен на самом деле :)
alexs писал(а):2. В редакторе переменных кнопки вызова редактора функции нет. Честно говоря - я совсем не вижу необходимости в этом окне.

Вы не пользуетесь редактором переменных?
alexs писал(а):3. Интерфейс у меня GTK2 из Fedora 23 - насчёт линукса угадал :D

хоть одна хорошая новость :)
alexs писал(а):
4. Окно - штатный редактор функций из редактора memo (см изображение)

так и есть... картинку, что у меня там, я уже выложил... что в design-time, что в run-time один хрен... 2 строковых, 3 математических и 6 интерпретатор функций. и как я писал никакой lr_add_function.lpk не помог :(
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 20.07.2016 16:16:23

1.
52722 - вот ревизия.
Эта информация идёт из окна "О программе IDE". Так они там нумеруют.
2.
Free Pascal Compiler version 3.1.1 [2016/06/17] for x86_64
3.
RusDeveloper писал(а):Вы не пользуетесь редактором переменных?

Я не вижу в нём смысла. У меня два вида переменных - одни я передаю из программы в отчёт, через присвоения frVariables:
Код: Выделить всё
  frVariables['TB_DOC_ID']:=DOC_ID;

И переменные, которые используются внутри отчёта. Эти вообще создаются при первом присваивании в скрипте.
Хотя, формально, они также хранятся в frVariables.

Попробуй на транковой версии.
У меня нормальное поведение в линухе и в винде.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport скрипт

Сообщение RusDeveloper » 20.07.2016 16:18:04

добавлю от себя еще один вопрос. есть вот такой скрипт в мемо:
Код: Выделить всё
VS1:= VS1 + [sqlMain."S1"];

где
VS1 - переменная, которая передается в отчет из кода frVariables['VS1'] := 5; (она передается без ошибок и если в мемо прописать [VS1], то выводится "5");
[sqlMain."S1"] - числовое поле, тоже выводится без проблем в мемо, если прописать просто [sqlMain."S1"]

при запуске отчета получаю ошибку Invalid variant operation на строке result := V1 + V2 в
Код: Выделить всё
function SumOrConcat(const V1,V2: Variant): Variant;
begin
  if VarIsStr(V1) then
    result := V1 + VarToStr(V2)
  else
  if VarIsStr(V2) then
    result := VarToStr(V1) + V2
  else
    result := V1 + V2
end;

причем V1 = 5, а вот V2 = unsupported variant type: TFMTBCDFactory

где ошибка?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение RusDeveloper » 25.07.2016 16:55:24

поставил Lazarus 52722 и FPC выше, чем 3.0, но не могу сказать, какой именно ревизии (лежал у меня отдельно в папке, когда-то я его из SVN взял) - появились новые функции, но проблема с unsupported variant type: TFMTBCDFactory осталась, а ведь она вроде не зависит от FPC (файл lr_pars.pas - из лазарусовсого SVN берется)... я так понимаю, что это такая фишка? и у всех так работают скрипты?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 26.07.2016 11:49:12

Нормально работает
вот проверку сделал:

Вот код присвоения переменной значения (в основном бинарнике):
Код: Выделить всё
procedure SetDocID(DOC_ID:integer);
begin
  frVariables['TB_DOC_ID']:=DOC_ID;
end;

Код скрипта из отчёта:
Код: Выделить всё
begin
  TB_DOC_ID:=TB_DOC_ID + [Page2.quRashDoc."tb_doc_id"];
  [MESSAGEBOX([TB_DOC_ID], ['a'], [1])];
  TB_DOC_ID:=TB_DOC_ID - [Page2.quRashDoc."tb_doc_id"];
  [MESSAGEBOX([TB_DOC_ID], ['a'], [1])];
end;
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport скрипт

Сообщение RusDeveloper » 26.07.2016 17:33:10

заменил
Код: Выделить всё
VS1:= VS1 + [sqlMain."S1"];

на
Код: Выделить всё
VS1:= VS1 + [Page1.sqlMain."S1"];

пишет Undefined symbol Page1.sqlMain."S1", т.е. не видит Page1 почему-то... а почему?

и еще вот Вы код приводите:
Код: Выделить всё
TB_DOC_ID:=TB_DOC_ID + [Page2.quRashDoc."tb_doc_id"];

quRashDoc - это что? TSQLQuery на форме заказа отчета?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 27.07.2016 15:28:24

У меня отчёт содержит форму (Page2) с запросами
Я использую zeos, соответсвенно в отчёте у меня используется компонент TLRZQuery
Посмотри пример из lazarus/components/lazreport/samples/enduser_reports/sql_demo - я по данной технологии отчёты строю.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport скрипт

Сообщение RusDeveloper » 28.07.2016 15:40:56

ни в Lazarus 1.6, ни в Lazarus 52722 пакет lr_zeosdb 0.2.2 установить не могу. пишет, что некоторых требуемых пакетов не найдено, смотрите диаграмму пакетов. сейчас еще попробую загрузить его из его SVN. но почему, мать его, он не устнавливается в IDE?!!!
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: LazReport скрипт

Сообщение alexs » 28.07.2016 15:43:56

Может потому что надо установить ZEOS?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: sunjob и гости: 68

Рейтинг@Mail.ru