Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
почему у меня такой эффект как на приложенных пиктуресах? (в репортдизайнере все причесано по столбикам под линеечку, а в предпросмотре все разъезжается) И еще - Как дать сумму в конце отчета, а не в конце каждой страницы? - дал по ЕОФу так вообще не стало итог печатать. Как чепятать наряду полей текущей базы, поля из другой базы через макроподстановку но рилейшн им можно задать. сенкс... ЗЫ чего-то у меня подозрение есть что файл не приложится, хотя я его указал и размер его 60 кил в зипе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:26 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
>- Как дать сумму в конце отчета, а не в конце каждой страницы? Включи Sumary Band и внем и распологай свой итог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:41 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
CTAC-KOпочему у меня такой эффект как на приложенных пиктуресах? (в репортдизайнере все причесано по столбикам под линеечку, а в предпросмотре все разъезжается) 1) Кривой драйвер принтера 2) Для объектов печати использованы шрифты, не существующие у клиента. В этом случае будут подставлены ближайшие похожие шрифты. CTAC-KOИ еще - Как дать сумму в конце отчета, а не в конце каждой страницы? - дал по ЕОФу так вообще не стало итог печатать. Так нужно группировку сделать по EOF(). Хотя можно сделать и группировку просто по константе (число 1). Или же использовать Summary Band CTAC-KOКак чепятать наряду полей текущей базы, поля из другой базы через макроподстановку но рилейшн им можно задать. Не понял. Прямо так и пишите в выражении объекта печати Table2.Field2 Правда, если эта таблица связана по Relation с главной таблицей. В противном случае просто не будет перемещение по записям в подчиненной таблице. Самый универсальный вариант - это создавать временную таблицу для печати и притягивать в нее все нужные поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 13:03 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
да не в шрифтах и принтере дело. Я его только у себя и создал - все ж вроде красиво. Дай думаю превью !без печати! гляну - а там такой беспредел! шрифты в репортдизайнере везде задал курьернью в 8 размер. Так оно на превью и видно. Мне чего не понятно особенно, так это чего в самом заголовке уже такие проезды? Там где названия колонок. Или надо попробывать напечатать и тогда посмотреть чего будет, тогда на фига, спрашиваецца, существует превью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 13:17 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
по ходу, SummaryBand помог для итогов - спасибо!!! за макроподстановку: у меня там таблица такая, в ней столбцы называются типа Pay1, Pay2...Pay12. Ну и из соответветствующей колонки по месяцу данные и берутся. А это ж иначе чем ч/з макроподстановку я не умею... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 13:23 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
CTAC-KOда не в шрифтах и принтере дело. Я его только у себя и создал - все ж вроде красиво. Дай думаю превью !без печати! гляну - а там такой беспредел! Именно в драйвере принтера дело! Попробуй установить драйвер HP LaserJet. Т.е. простейший драйвер безо всяких цифирек и буковок. Есть в списке стандартных драйверов Windows. Еще можешь поковырять текущие настройки принтера на предмет печати текста как графики без использования прошитых шрифтов принтера. В качестве макроподстановки используй EVALUATE("MyTab.Pay"+"2") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:14 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
ну говорю же, не печатаю я! Ну поставил я тот дарайвер лазарета, выбрал печать на него, - тот же икс, вид сбоку. Я уже и фоксу перезагружал, и лазарет стоит по умолчанию. У меня еще струйник в системе есть, выбрал его - та же хрень. А Вы, извиняюсь, картинки видали? Я чего не пойму - как дрйвер принтера на превью влияет? Драйвер имхо может так повлиять, что отпечатанное с превью не сойдется - это да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:35 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
опять же, ежели б на превью влиял бы драйвер принтера, то по логике, перед превью меня должно спросить бы, а с каким принтером вам превью замутить, но нет, спрашиает только уже непосредственно перед печатью. Я мож уже совсем дуб и чего не понимаю, так Вы объясните... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:48 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Судя по рисунку report.JPG все заголовки сделаны одним лэйблом? тогда, точно, проблема со шрифтами, для печати используются другие шрифты, не те, которыми рисуется макет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:55 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
а может быть проблема в том что я все надписи колонок сделал какбы в одну строку, одним объектом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:57 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
ага, я догался и получил ответ, получается почти одновременно... а как же теперь? А для проевью можно задать тот же фонт, что и в макете? А особенно волнует печать все тем же шрифтом что и в макете!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 15:03 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
ну вот, разделил лйбл на лейболят 8.) и все тепер гуд. 2ВладимирМ Вы преложили все л0жить в одну талбицу и оттедова все грамотно чепятать. Можно например делать селект в темп, а как сделать этот селект чтоб и поля текущей базы, и вот те, согласно нУмеру месяца, да еще и в конце последнее поле, в нем сокращение фамилии посредством фуКции. Функция делает из Иванов Иван Иваныч - Иванов И. И., а берет фамилию из третьей базы. Все релейшены по полю "код". Как будет выглядеть select база abonpay - какбы основная поля abonent, talk_time, abonpay, intercalls, addpay, total_suma база abondk, тут смотря по месяцу поля Payed2, Rest1 база ab_codes поле name юзер-функция ShortNаme() in main relation to ab_code ???? sele 0 use abonpay sele 0 use ab_codes set rela to abonpay.ab_code sele 0 sele abondk set rela to abonpay.ab_code sele abonpay select fields abonent, talk_time, abonpay, intercalls, addpay, total_suma ...??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 16:49 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Извини, я мало что понял. Как-то лень пытаться понять специально исковерканный текст (оно мне надо?). -) Обычно никто не делает функцию выделения фрагмента имени или отчества. В общем случае - это очень не тривиалдьная задача. Создают специальное поле, куда пользователь и должен ввести инициалы при создании нового клиента. -) Из отчета можно вызывать напрямую пользовательсую функцию. Т.е. в выраженни для печати так прямо и написать ShortNаme() -) Пользовательскую функцию можно вставить и в Select-SQL, хотя это и не приветствуется. Обычно создается временная таблица с пустым полем, а потом сканируется и заполняется это пустое поле. -) Вовсе не обязательно для создания временной таблицы использовать Select-SQL, можно через CREATE CURSOR + SCAN -) Создание временной таблицы для печати - это универсальное решение большинства проблем формирования отчета. Но в простых случаях можно и без нее. Зависти от конкретной задачи. Если я ответил не на то, о чем ты спрашивал, то уточни, что же тебе надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 17:34 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
ну Вы все правильно поняли, ничего в тексте нету непонятного и изковерканого. Вопрос был в просьбе привести текст программы, вернее строки с Select, ну а поскольку Вы говорите что лучше Create cursor, то тогда с ним. Имена таблиц я дал, имена необходимых полей тоже. Желательно привести пример как сделать сразу за один проход используя ShortNаme() и как за два прохода со Scan. Мне нужно хоть бы раз увидеть, разобраться и понять, чтобы в дальнейшем этот способ применять...8) Я сейчас как раз на стадии создания всех отчетов, вернее все они у меня есть уже давно под ДОС, а надо ж теперь под вижуал со всеми приятностями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 17:49 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Еще раз. В Вашем, конкретном случае, никаких особых проблем нет. Создание временной таблицы для печати вроде бы не нужно. Вполне сойдет Relation. Попробуйте еще такой вариант: -) Открываете отчет на модификацию -) Устанавливаете Private DataSession (пункт меню Report, подпункт Private DataSession, появиться "птичка" рядом с этим пунктом меню) -) Открываете DataEnvironment отчета (пункт меню View, подпункт DataEnvironment) -) Добавляете в него все 3 свои таблицы, начиная с главной (правой клавишей мыши на пустом месте DataEnvironent, пункт Add) -) Если начали добавление не с главной таблицы, то убедитесь что в свойстве DataEnvironment.InitialSelectedAlias установлен алиас главного курсора -) Настройте там же, в DataEnvironment, связи между таблицами (нажать левой клавишей мыши на поле в главной таблице и не отпуская протянуть к индексному тэгу подчиненной) В результате, полученный отчет будет относительно независим от остального приложения. Т.е. при запуске отчета не будет никакого дела до того в каком состоянии находятся таблицы, использованные в качестве источника данных. Для выполнения отчета будут открыты как бы "копии" таблиц. По поводу пользовательской функции. В данном случае, лучше всего передавать значение фамилии как параметр. Т.е. чтобы внутри функции по возможности не было обращений к полям таблиц. В этом случае запрос будет выгляедть примерно так (если я правильно угадал поле с фамилией): Код: plaintext Соответсвенно сама функция будет иметь вид: Код: plaintext 1. 2. 3. 4. 5. Здесь принципиально важно, чтобы количество символов в возвращаемом значении всегда было одинаковым. Если по каким-то причинам это невозможно, тогда надо озаботится этим в самом запросе: Код: plaintext Ну, а в 2 прохода - это вместо вызова функции создаешь пустое поле, например так: Код: plaintext А потом сканируешь результат выборки и используя функцию формируешь значение поля Inicial, опираясь на значение поля Name из той же выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 22:26 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Вы показали мне как только одно поле выбрать селектом, это в принципе не сложно, а как вся команда выглядеть будет? Например такое у меня не проходит: Код: plaintext 1. 2. 3. 4. 5. 6. EVALUATE(f_rest) я по Вашему совету поставил вместо &f_rest, но и с &f_rest тоже не проходит, останавливается в этом месте, а как тогда сделать? ЗЫ f_restprv=abondk.rest1, f_rest=abondk.rest2, f_payed=abondk.payed2 и здесь 1 или 2 зависит от месяца, на февраль так оно и будет, на март это будет уже f_restprv=abondk.rest2, f_rest=abondk.rest3, f_payed=abondk.payed3 Как я понял тут у меня не получится все выбрать одной командой во временный курсор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 11:40 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
так, с ошибкой разобрался - там одной запятой не хватало (в конце третьей строкие), но с EVALUATE не пробывал, пока с макроподстановкой. Теперь другая кака вылезла - в последние 4 поля поля он вставил одни и те же значения по всему полученному курсору. Почему? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 11:52 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
структуру обеих таблиц с назначением полей четко и ясно можешь изложить?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 11:53 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
могу. всего используется 3 таблицы 1. Abonents из нее испульзуются поля ab_code - код абонента, ab_name - имя абонента, полное (Иванофф Иван Иваныч), из которого посредсвом функции shortname() делается короткое (Иванофф И. И.) 2. AbonPay - база с текущими расчетами за тел.переговоры из нее испульзуются поля ab_code - код абонента, abonent - телефон абонента talk_time, abonpay, intercalls, addpay, totalsuma - насчитаные время, абонплата, междугородка, дополнительно, всего; 3.AbonDK из нее испульзуются поля ab_code - код абонента, и в зависимости от месяца поля Rest, Payed (их всего 12, т.е. Rest1, Rest2...Rest12, Payed1, Payed2...Payed12) таблицы между собой можно связать по ab_code. Но тут меня еще одна проблема постигла - я каждый месяц ложу в архив результаты начислений и они там лежат без индексного файла, неиндексированные, а отчет может заказываться и из архива. В отчете надо получить таблицу, в которой будут в основном поля из AbonPay, т.е. abonent, talk_time, abonpay, intercalls, addpay, totalsuma потом идут 3 поля из базы AbonDK, и в конце сокращенное имя абонента из Abonents. 3 поля из базы AbonDK: это остаток с прошлого месяца, оплата в текущем и текущий остаток, названия полей зависят от месяца исполнения отчета, на февраль используются поля Rest1 как RestPrv, Payed2 и Rest2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 12:55 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Если возможен платеж от не существующего абонента, то INNER JOIN к справочнику надо заменить на LEFT JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 14:54 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Спасибо огромное Владимир!!! Все работает, круто!!! С моими восьмибитными понятими такого не осилить... А еще в догоночку вопросец есть: я думал, что без проблем сам разберусь как, поэтому сразу этого не описал. В таблице AbonPay есть еще такое поле, PayCateg называется, числовое. Мне нужно получить только те записи, где PayCateg=1, понятно что я могу и из полученного курсора лишние записи удалить или фильтрануть, а может как-то можно без участия лишних записей вообще? Я пока ждал ответа, создал просто таблицу под отчет этот и туда аппендом все что надо из AbonPay заливал, а потом заполнял последние 4 поля, в базе я их назвал RestPrv, Payed, Rest и SName. С точки зрения программирования Ваш способ получается изящнее, короче и не требует создания под отчет таблиц - клево! :) Спасибо еще раз!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 15:29 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
А можно еще вопрос? Вот таким образом из базы AbonPay я подготовлю отчет по категории_плательщика=1 (PayCateg=1), те физлиц остается теперь сделать то же самое, только для категории_плательщика>1 (организации). Но здесь вопрос именно по организации репорта. В случае с =1 я печатаю все записи подряд и в конце итог. В случае же с >1 мне нужно немножечко иначе печать организовать. Ориентируясь по коду абонента надо сделать так, чтобы сначала шло название организации, затем шапочка (названия колонок), затем потелефонно вывод начислений и итог по организации (на рубеже смены кода абонента, при этом понятное дело надо сортировать по коду абонента). Ну и в самом конце общий итог по организациям. Но и это еще не всё: как мне сделать так, чтобы если телефонов у организации не много, не рвать их на разные страницы, если до конца страницы оно не поместится. (опять же, в досовой версии у меня все это организовано и работает, но я там репортами не пользовался вообще и здесь уже мои 8-битные:) приемы не пройдут) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 15:48 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
CTAC-KOВ таблице AbonPay есть еще такое поле, PayCateg называется, числовое. Мне нужно получить только те записи, где PayCateg=1, понятно что я могу и из полученного курсора лишние записи удалить или фильтрануть, а может как-то можно без участия лишних записей вообще? Тот же самый запрос, только добавляешь еще одну строчку Код: plaintext 1. 2. CTAC-KOЯ пока ждал ответа, создал просто таблицу под отчет этот и туда аппендом все что надо из AbonPay заливал, а потом заполнял последние 4 поля, в базе я их назвал RestPrv, Payed, Rest и SName. С точки зрения программирования Ваш способ получается изящнее, короче и не требует создания под отчет таблиц - клево! :) На самом деле в моем варианте тоже создается временная таблица для печати. Просто она называется курсор. По поводу второго отчета организуй в отчете группировку по AbonPay.ab_code и выводи нужные заголовки и итоги в GroupHeader и GroupFooter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 16:56 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
Ага! Спасибо! А я этот Where не туда вставлял. Уже и Having пытался втулить... Так я понимаю, что создается временная таблица, но как-бы она и не создается, только в памяти, ну временный файл на винте. А я специально сделал таблицу. Ну времменая таблица понятно что удобнее, она в процессе выполнения программы создается, ее и сохранить можно, если надо. Я свою таблицу вручную создал, чтоб ее очищать и заполнять по ходу. Может так и лучше, но Ваш способ короче. А как в Select зделать такой запрос, где по условию, в моем случае ab-code, вставлять сумму значений поля нескольких записей из другой таблицы. вот у меня в AbonDK записи с одним и тем же ab_code не повторяются, а в AbonPay повторяются - по нескольку телефонов на один код. Как запросить в курсор чтобы получились полe ab_code и поле TotalSuma, где будет сумма значений поля TotalSuma из abonpay по условию одинакового ab-code? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 17:38 |
|
||
|
поможите с репортами, кто могёт - разъезжаются колонки!
|
|||
|---|---|---|---|
|
#18+
т.е. заменить следующее SQL-запросом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 18:25 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32910733&tid=1594843]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 425ms |

| 0 / 0 |
