Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.04.2011, 18:13
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию fastreport v4.0 передача списка параметров

Вообщем нужно реализовать в запросе

Код:
select * from table
where T_field in (:param) 

тут я пытаюсь передать в качестве параметра список типа 1,2,45,7 проблема в том, что при вставке параметра FastReport, руководствуясь какими-то своими побуждениями превращает ее в '1.2.45.7' (ладно '' , но , в . зачем превращать - тайна покрытая мраком),что трактуется в последствии не как список целых чисел, а как неизвестная хрень.

Пытался менять тип параметра, менять запрос в скрипте(может не на том событии пытался...хотя на каком только не пытался) и много других извращений.

Думаю, как вариант, попробовать в самой программе до формирования отчета создать для каждого запроса в нем по отдельной выборке,или даже попытатся заставить отчет юзать запросы самой програмы но стремно как то пихать лишних 10 элементов на форму.

Мучаюсь с проблемой хоть и время от времени, но довольно давно, так что было бы здорово почитать чьи-нибудь идеи по этому поводу.
Ответить с цитированием
  #2  
Старый 12.04.2011, 18:46
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Параметр воспринимается как число, и в настройках, скорее всего, в качестве разделителя дробной части чисел стоит '.', поэтому запятые автоматически преобразуются в точки.

Таким образом передать в параметр запроса множество не получится.
Попробуйте вот так:
PHP код:
EXEC('Select * From Table Where TField In (' + :param ')'
И передавайте параметр, как строку.
Ответить с цитированием
  #3  
Старый 13.04.2011, 10:06
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

Ну вот это в делфи да, будет текстом запроса, отлично работающим, а проблема именно в глумлении Fastreport над передаваемыми ему параметрами.
Ответить с цитированием
  #4  
Старый 21.04.2011, 12:21
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

Up ^^ а то бида)
Ответить с цитированием
  #5  
Старый 21.04.2011, 16:00
Аватар для th_bav
th_bav th_bav вне форума
Новичок
 
Регистрация: 02.12.2010
Сообщения: 74
Репутация: 10
По умолчанию

Может в Excel тогда раз FastReport не робит?
__________________
Глаза боятся - Руки делают...
А еще я не внимательный...
Ответить с цитированием
  #6  
Старый 22.04.2011, 09:49
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

Эксель не прокатит, в проекте на fr4 все отчеты.
Ответить с цитированием
  #7  
Старый 27.05.2011, 11:48
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

ВНЕЗАПНО.
ап.
Ответить с цитированием
  #8  
Старый 27.05.2011, 12:15
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

сохранить в виде строки '1,2,3' и потом вызвать:
Код:
Add('Select * From Table where TField  In ('+:param +')');
Ответить с цитированием
  #9  
Старый 27.05.2011, 15:02
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

Правильно, зачем читать текст вопроса)
Ответить с цитированием
  #10  
Старый 27.05.2011, 16:02
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Правильно, зачем читать текст ответа. Если вы передаете СТРОКУ, то она вообщем- то никак не должна модифицироваться. Покажите, как вы передаете список типа 1,2,45,7.
Ответить с цитированием
  #11  
Старый 27.05.2011, 16:28
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

В кавычках строка передавалась тоже. А вообще фр ставит их автоматически для параметров соответствующего типа.
Ответить с цитированием
  #12  
Старый 27.05.2011, 16:57
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Только что специально проверил- так как я сказал, работает. Где ваш код?
Ответить с цитированием
  #13  
Старый 27.05.2011, 18:12
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

А смысл, если код на делфи, а проблема в ФР?)

А вот юзание этого вашего ADD в скрипте отчета по событию BeforePrint, конечно дает результат...


Код:
worckdays.sql.Add('and g_otd In ('+<otdelz>+')group by g_rid');

...правда тогда придется перелопачивать все запросы в отчетах и писать намного больше, чем если бы удалось настроить там нормальную передачу родных параметров.Но на крайняк, вариант.


а вообще по хорошему параметры туда передаются как то так:
Код:
report.variables['var']:=''''+s+'''';
где S = 1,2,3

И передаются в один из внутренних запросов как параметр
Код:
where blablabla in (:var)

только при их чтении и возникают описанные выше ошибки.

Последний раз редактировалось anonymous, 27.05.2011 в 18:21.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter