BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование отчетов  / Пропуск строк источника в бэнде cross

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Пропуск строк источника в бэнде cross, перенёс из "Программирование приложений"
 
Добрый день!
Делаю отчёт по товарам на основе оборотки за месяц, одна номенклатура на один лист. В приходе список приходных документов (по вертикали) а в расходе продажи по дням (по горизонтали).
Я подготовил источники плагином во временные dbf файлы, а когда начал прикручивать их к отчёту, столкнулся с трудностями.
1. по бэнду masterdata можно пропускать строки по условию делая ему .visible=False из BeforePrint. Для кросса этот приём не сработал, а в источнике данные для всех номенклатурных номеров отчёта. Как правильно пропустить строку, если кросс идёт по источнику из внешнего dbf?
2. Собственно, первый Вопрос возник, когда я не смог сделать SQL-запрос к внешнему dbf
- вставил компонент "база данных"
Provider=VFPOLEDB.1;Data Source=D:\;Mode=Read|Share Deny None;User ID="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN="";
- вставил компонент запрос к БД

sel ect
pr.MONTH,
pr.CMONTH,
pr.GRUP,
pr.NNUM,
pr.NPOST,
pr.CPOST,
pr.DATE_DOC,
pr.NUMDOC,
pr.NUMDOCP,
pr.KOL
fr om pku_pri as pr
where pr.month=(:mo) .and.pr.nnum=(''+:nn) .and.pr.grup=(''+:gr)
в параметрах описал типы данных mo - int, nn/gr - str ... вызов в отчёте
n:=n+1;
prih.close;
prih.params['gr']:='"'+[DialogForm.DataSet1."GRUP"]+'"';
prih.params['nn']:='"'+[DialogForm.DataSet1."NNUM"]+'"';
prih.params['mo']:=n;
prih.open;


вылетает с ошибкой "Неправильно определён объект Parameter. Предоставлены несогласованные или неполные сведения." - после этого слетает описание типов в источнике, даже если отчёт сохранён... Убрал из where группу и номенклатуру - всё работает, есть фильтр по месяцу.
Никогда такого не было, если в sql обращался к собственным таблицам БЭСТ, а вот с внешней не работает фильтр по строковым параметрам.
Пробовал новый источник из 32 сервиспака, базу прикрутил, но в нём нет фильтров - научите, как правильно в sql-запросе обратиться к имени этого источника, может так сработает?

Есть ещё один замечательный элемент - таблица, у него есть свойство filter, но я опять не смог передать в него больше одного параметра. Какой синтаксис правильный?
table1.close;
//table1.filter:='str(month)+nnum $ "'+str(n)+[DialogForm.DataSet1."NNUM"]+'"';
table1.filter:='month='+str(n)+' and nnum="'+cNNUM+'"';
table1.open;
table2.close;
table2.filter:='nnum = "'+cNNUM+'"';
//table2.filter:='(pr=1) and (month='+str(n)+') and (nnum = "'+cNNUM+'")';
table2.open;
ни один из вариантов не сработал, вернее перестаёт работать, когда среди параметров появляется строковый nnum... ЧЯДНТ?

Заранее благодарю.
 
1. Для бенда CrossData можно попробовать устанавливать в 0 ширину бэнда (свойство Width := 0), но лучше исключить лишние строки в самом источнике.
2. В условии where pr.month=(:mo) .and.pr.nnum=(''+:nn) .and.pr.grup=(''+:gr)
двойные кавычки и знак "+" явно лишние - их надо убрать.
3. Вообще в шаблоне отчета у источника для CrossData в свойстве MasterSource должна стоять ссылка на источник MasterData, а связка для фильтрации строк устанавливается в свойстве MasterFields. Причем для каждой строки из Master-источника в Cross-источнике под фильтр должно попадать всегда одно и то же количество строк. Надёжнее использовать для таких отчетов объект "Источник данных БЭСТ". Написать для этого объекта источник на FoxPro, который будет вытаскивать данные из любой произвольной таблицы с любым условием фильтра достаточно просто. Если ничего не получится - приложите Ваш шаблон отчета и dbf-файлы, на которых его можно проверить.
Страницы: 1
Читают тему (гостей: 1)