Добрый день!
Делаю отчёт по товарам на основе оборотки за месяц, одна номенклатура на один лист. В приходе список приходных документов (по вертикали) а в расходе продажи по дням (по горизонтали).
Я подготовил источники плагином во временные 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... ЧЯДНТ?
Заранее благодарю.
Делаю отчёт по товарам на основе оборотки за месяц, одна номенклатура на один лист. В приходе список приходных документов (по вертикали) а в расходе продажи по дням (по горизонтали).
Я подготовил источники плагином во временные 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... ЧЯДНТ?
Заранее благодарю.