powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передать список значений в Query FastReport-у
21 сообщений из 21, страница 1 из 1
Передать список значений в Query FastReport-у
    #39099796
romano105
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Имеем DelphiXE, FastReport 5. Пользователь выбирает список товара, для которого будут печататься ценники.
Внутри отчета лежит frxFIBQuery такого плана:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
    some_fields_list       
FROM
    S_DETAIL t                                                                                        
where
    t.ID IN (:ID_LIST)


переменная запроса ID_LIST связана с переменной отчета report_param_list.
Вопрос знатокам, какого типа должны быть переменные report_param_list и ID_LIST чтобы в отчет можно было передать список значений в виде строки '1, 2, 3', либо динамического/вариантного массива [1, 2, 3]. В виде строки более предпочтительно.
Было бы идеально, чтобы в текст запроса передаваемая строка "внедрилась" "... where t.ID IN (1, 2, 3)" как substitute, а не как строковый параметр.
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39099806
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romano105,

никакого.
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39099832
romano105
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asviridenkovromano105,

никакого.

Передаю список из 3-х значений: 1, 2, 3
Если я определяю тип переменной для внутреннего запроса ID_LIST следующими значениями Unknown, String, Array, Bytes, VarBytes, и передаю не обрамляя апострофами, возникает ошибка "qQuery: Ошибка в выражении '1, 2, 3': ';' expected"
при обрамлении апострофами - ошибка:

SelectQuery:
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
Conversion error from string "1. 2. 3".

Пока что остается дальше перебирать перечень типов...
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39099850
KnyazewSergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
romano105Здравствуйте!
Имеем DelphiXE, FastReport 5. Пользователь выбирает список товара, для которого будут печататься ценники.

Ну динамически можно построить как-то так наверное.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
exec (N'
SELECT
    some_fields_list       
FROM
    S_DETAIL t                                                                                        
where
    t.ID IN (' + :ID_LIST + N')')


Можно макросы в FireDac юзать..... да еще наверное чего можно делать
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39100003
gpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте просто передать шестую строчку запроса в TfrxFIBQuery.SQL
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39100058
romano105
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gpiПопробуйте просто передать шестую строчку запроса в TfrxFIBQuery.SQL
Да, это пока единственный работающий способ. Благодарю
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Передать список значений в Query FastReport-у
    #39516848
iVaRela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Побуду некропостером. Возможно кому-то пригодится мое решение. Оно подходит в тех случаях когда нельзя динамически формировать SQL запрос, но можно задать значения переменных.
В этом примере я выбираю несколько филиалов, коды которых передаю в строковом параметре :BRANCH_LIST

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
  DT,
  BRANCH_ID,                        
  BRANCH_NAME,
  INCOMING,
  OUTGOING
from 
  TV_DAILY        
where
  cast(:BRANCH_LIST1 as varchar(256)) containing '-'||BRANCH_ID||'-'



Строка, которая содержит список филиалов выглядит так: "-1-3-66-99-", и в ней 4 филиала с кодами 1,3,66 и 99. Не забывайте, что строковые переменные передаются в FR с кавычками. Остальное думаю и так понятно.
Для больших выборок способ будет не эффективен, но в некоторых случаях может подойти.

P.S. containing - это фишка Firebird-а, но в других реализациях можно заменить ее на like
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517085
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iVaRelaвыглядит так: "-1-3-66-99-"
совет стар, как мир :) Лучше вместо тире-дефиса параметры разделять тильдой "~"
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517099
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дучше диалоговую форму выбора запихнуть в отчёт, тогда и передавать ничего не нужно в отчёт
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517478
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Док> совет стар, как мир :) Лучше вместо тире-дефиса параметры разделять тильдой "~"

Привет!
Я неособый фастрепортист, так, школота.
А почему тильде вместо дефиса/минуса?
Оно ж - тупо разделитель.
Да, тильда много реже минуса применяется. Или в FR только односимвольный разделитель возможен?
Почему не использовать свой шаблон а ля #№#, и применять его по усмотрению?
_________
Просто ради интереса.
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517490
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator> Да, тильда много реже минуса применяется. Или в FR

Да, из-за редкости, и к FR это отношения не имеет.
Хотя для целочисленных без разницы, что тильда,
что дефис, да хоть точка, запятая - что угодно.
А вот для строк имеет значение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517542
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Так и понял. Я например в качестве разделителя [полей] использую редко встречающуюся комбинацию символов (не один). И для строк особого значения не имеет
Не как CSV, а когда вордовый текст от нуба надо разобрать по шаблону. И где цифирь - суть строки - не числа.
Или даты...

Фигня вобщем.
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517558
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator> редко встречающуюся комбинацию символов (не один)

Зачем, если есть экранирование?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517564
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам> Зачем, если есть экранирование?

Поясни
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517577
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокiVaRelaвыглядит так: "-1-3-66-99-"
совет стар, как мир :) Лучше вместо тире-дефиса параметры разделять тильдой "~"
Я делаю так:
Код: plsql
1.
2.
3.
4.
5.
6.
select *
 from tbl t
 join (
  select cast(p.itm as integer) id
   from parse_list(:list) p
 ) s on s.id=t.id


parse_list - процедура разбирающая список с разделителями. Для большого количества элементов в списке/большой таблицы работает существенно быстрее т.к. цепляется индекс по tbl.id.
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517631
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator> Поясни

Ну экранирование символов. Как в С++ и пр.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517841
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамGator> Поясни

Ну экранирование символов. Как в С++ и пр.____
Офф топик не по теме и масло масляное, конечно
Мне показалось у меня похожая (на X11) задача.
Кратко
- есть установленный бланк и есть человечий текст (суть отсебятина), где есть необходимые данные.
- вот это необходимое мне надо вычислить-выципить из текста и поля бланка заполнить.
Напр. Дата рождения, ДР, родилась... - суть одно и то же.
- На разных языках.
___
Ну я тупо ищу "ключевые" слова перед и после. Т.е. "префикс"."постфикс"
Тупо текстово. Без регулярок. И (поверьте мне) номер паспорта никогда не спутаю с номером телефона или почтоиндексом. )))
И я не понимаю, как можно почтовый индекс перепутать с номером телефона.
Уж номер можно отдельно разобрать, что это: мобилка, стациоарка или IMO/
===
Резюме.
Т.е. на входе я работаю с текстом. На выходе - с полями.
Да! Скажут все. Сделай форму, пусть поля заполняют.
А я отвечу; Хрен вам! Форма есть давно, но, например, sms, email проще.
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517845
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Миль пардон!
как-то связались во мне эти вопросы Дока и Х11.
И тут и там разделители, У Дока хоть регулярок нет
:)
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517848
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, Док! Вопрос не твой, ясен пень.
Но тильда - от тебя!
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39517974
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorНо тильда - от тебя!
от "Деда", ЕМНИП :)
...
Рейтинг: 0 / 0
Передать список значений в Query FastReport-у
    #39518029
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Па сабжу:

для мсскл юзаю врем.таблицы.
Например в фильтре отчета есть ЧекЛистбокс.
Выставляем нужные "чеки".
Перед выполнением запроса пробегаем по чеками и заполняем врем. табличку значениями ключей.
(профит)

Таких фильтров может быть много.
Это заложено в репортовом движке.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передать список значений в Query FastReport-у
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]