FAQ по Crystal Reports

         

Наиболее типичные ошибки при выполнении отчетов на Crystal Reports


Отчет выполняется нормально в просмотрщике CRRT. А при просмотре в Crystal при попытке соединиться с сервером дает ошибку "Невозможно соединиться с сервером", хотя имя сервер, имя пользователя и пароль набираю правильно и с сервером все в порядке. Какая может быть причина? Отчет, который раньше работал, при просмотре в CRRT дает ошибку 599 (в Previev в Crystal - все нормально). В чем причина? Разработанный на Crystal Reports отчет при запуске выдает ошибку Print Engine 534. В чем может быть причина? Где можно прочитать расшифровку ошибок Print Engine?



Q: Чем отличается репозиторий Crystal Report 10 от 9-й версии?


A: В CR 9 репозиторий - БД Access, доступ к которой осуществляется через ODBC DSN. В т.ч. и разделяемый доступ - через локальную сеть.

В CR 10 репозиторий управляется Crystal Enterprise. Это даёт следующие преимущества:

защищённый авторизованный доступ к объектам репозитория; использование механизма Business Views - дополнительного слоя метаданных, упрощающего подключение разработчиков отчётов к источникам данных.

Соответственно, хранится репозиторий Crystal Reports в той же БД, в которой создан и репозоторий Crystal Enterprise (репозоторий Crystal Enterprise - рабочие таблицы сервера Crystal Management Server). При установке CE 10 устанавливается и утилита для переноса репозитория из CR 9 в 10. Диск Crystal Enterprise 10 идёт со всеми редакциями Crystal Reports.



Q: Чем заменяется слой метаданных


A: В CR 9 такого механизма нет. Точнее, частично эту функцию брали на себя команды из репозитория CR. В Crystal 10, помимо команд, появился специальный механизм бизнес-представлений - Business Views. Этот механизм настраивается и управляется Crystal Enterprise 10 Professional (CR 10 Developer или Advanced Developer) или Premium. В Crystal Enterprise 10 Express, который идёт с Crystal Reports 10 Professional, его нет.

Отправить ссылку на страницу по e-mail
Обсудить на форуме

Interface Ltd.
Тel/Fax: +7(095) 105-0049 (многоканальный)
Отправить E-Mail
http://www.interface.ru/



Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 05.09.01

if (document.all.memphis_banner) document.all.memphis_banner.insertAdjacentHTML("afterEnd", ""+document.all.memphis_banner.alt+"");



Q: Что такое CRRT?


A: CRRT - это Crystal Reports RunTime, т.е. эта та самая программа, с помощью которой пользователи просматривают отчеты, настроенные с помощью Crystal Reports. CRRT устанавливается на компьютере пользователя вместе с клиентской частью IS-Builder.



Q: CR 9: Что подразумевается под


A: "Любой скомпилированный класс Java, который возвращает опубликованный метод java.sql.ResultSet, может быть использован как источник данных." (см. http://support.crystaldecisions.com/communityCS/TechnicalPapers/cr9_java_bean_datasource.pdf)



Q: CR 9: Исправлен ли экспорт в формат PDF?


A: Для экспорта в PDF, так же как и в MS Word, Excel, Lotus 1-2-3, текст, RTF устранены обнаруженные недостатки и неадекватности преобразований. Так, например, для формата PDF ранее некорректно преобразовывался русский текст, не работали гиперссылки.



Q: CR 9: Какие изменения произошли в драйверах прямого доступа к реляционным базам данных?


A: Существенных изменений два:
- введена поддержка Oracle 9i;
- убран прямой доступ к MS SQL Server. Теперь доступ к этой БД осуществляется в соответствии с технологией Microsoft - через ADO + OLE DB.



Q: CR 9: Какими средствами выполняются


A: В пакете Crystal Reports 9 поставляется Report Application Server - среда, обеспечивающая выполнение и просмотр отчётов через Web. При этом число открытых отчётов не ограничено.



Q: CR 9: Можно ли делать вложенные подотчеты, т.е. subreport в subreport-е?


A: Нет, и вряд ли будет - нет необходимости. Собственно, и подотчёты нежелательны из-за скорости (медлительности) формирования и неоптимальности SQL-запросов.



Q: CR 9: Можно ли использовать в CR 9 отчёты, подготовленные в предыдущих версиях?


A: Да, но совместимость, как и во многих других программных продуктах, только снизу вверх, т.е. отчёты, подготовленные в CR 9, недоступны в предыдущих версиях.
Кроме того, нельзя публиковать отчёты CR 9 в Crystal Enterprise Server 8.5.



Q: CR 9: Не появилась ли возможность


A: Нет. Как прежде, разделение при печати обеспечивается принтером. Для этого надо экспортировать отчёт в какой-л. удобный формат.



Q: CR 9: В восьмой версии я мог


A: Надо использовать репозиторий объектов, в частности, команды. Т.е. cформировать отчёт, через буфер обмена перенести SQL-код в команду, где его можно изменить, добавить параметры, и затем использовать как источник.



Q: Где можно получить компоненты


A: Такие компоненты входят в поставку версии Cristal Report 8.0 Developer.



Q: Где можно прочитать расшифровку ошибок Print Engine?


A: Папка Segate Crystal Reports 6.0->Segate Crystal Reports Developer's Help, далее в Cодержании помощи выбираем книгу Crystal Report Engine и последниий пункт Crystal Report Engine Error Codes. Или от слова далее - в Указателе набираем err и пункт Crystal Report Engine.



Q: Где взять VCL-компоненты для интеграции отчёта Crystal Reports в приложение C++Builder 6.0?


A: Для зарегистрированных пользователей на сайте Crystal Decisions (www.crystaldecisions.com/products/crystalreports/vcl) скачать файл zip-файл, распаковать его и произвести установку. По умолчанию установка VCL-компонент Crystal Reports настроена под Delphi. Для того, чтобы их можно было использовать в C++Builder, необходимо их перекомпилировать. Инструкция представлена в соответствующем файле помощи к компоненте Ucrpe32.
Тем не менее, чтобы это сделать, надо:
1. Определить путь к библиотеке (по умолчанию он при установке - Borland\Delphi\Crystal) в Tools | Environment Options | Library | Library path.
2. В меню выбрать пункт Component | Install Packages -> Add Designtime Packages.
3. Найти Package-файл и загрузить его.
4. В пустой проект из каталога Borland\Delphi\Crystal добавить pas-модули UCrpe32 и UCrpeDS и скомпилировать их. Появятся hpp-файлы.



Q. Как гарантировать выборку shared


A: Если нужно отобразить и подотчет, и переменную в заголовке отчета, можно использовать множественные секции Report Header, причем подотчет должен располагаться в верхней секции, а формула, содержащая переменную, - в нижней.



Q: Как использовать переменные?


A: Переменные должны быть объявлены (для каждого типа переменной имеется свой оператор объявления NumberVar, StringVar и т.д.). Можно сразу при объявлении присвоить начальное значение переменной, например, numberVar kol:=0; При использовании этой же переменной в других формулах она опять должна быть объявлена. Располагать формулы нужно в той секции, где должно происходить вычисление, например, для подсчета количества групп - в HeaderGroup (или FooterGroup), для подсчета количества записей - в Details. Если значение формулы не нужно видеть в отчете, ее можно сделать скрытой (Supress). Можно для вычисления переменной не делать специальную формулу, а расположить ее в формате секции в формуле Supress (обязательно поставить в конце Yes или No в зависимости от того секция должна быть скрытая или нет).



Q: Как использовать репозиторий в Crystal Report, который появился в 9-й версии?


A: В Crystal Reports 9 появился новый объект - репозиторий объектов. Он используется для сохранения и, соответственно, последующего применения в отчётах четырёх типов объектов:

текстовые объекты; графика (в т.ч. некоторые типы векторной); пользовательские функции; команды - собственные SQL-запросы - как источники данных.

Репозиторий можно (и имеет смысл) сделать разделяемым между различными разработчиками отчётов. Если нужно, чтобы добавленные из репозитория объекты обновлялись при открытии отчёта в Crystal Reports, установите для отчёта соответствующий признак.

При выполнении отчёта добавленные из репозитория объекты обновляются только тогда, когда отчёт опубликован и выполняется через Crystal Enterprise.



Q: Как определить состояние отчёта, интегрированного в приложение?


A: Можно использовать API-функцию PEGetJobStatus. Для остальных методов интеграции существуют аналогичные функции/методы/свойства. Например, для VCL-компоненты TCrpe в Borland использовать такие её методы и свойства, как Status, Pages и т.п.



Q. Как отобразить в отчете все значения параметра, принимающего множественные значения?


A. Необходимо создать формулу, в которой к каждому значению параметра можно обратиться как к элементу массива (только для множественных параметров!), например: {?param}[1]+' '+ {?param}[2]+' '+ {?param}[3]



Q: Как передать значения переменных из основного отчета в подотчет и наоборот?


A: Нужно использовать функции Store и Fetch. Этих функций имеется несколько - по типу переменной: StoreNumberVar, StoreStringVar и т.д. Для сохранения значения переменной используется Store...Var('имя переменной', значение из поля/формулы), для восстановления - Fetch('имя переменной'). Имя переменной пишется в кавычках, объявлять ее не нужно ни при сохранении, ни при восстановлении. Надо помнить, что формула для восстановления должна располагаться в секции ниже той, где сохраняется переменная.
Пример:В подотчете:
Formula1:=StoreNumberVar("post", {MBAnalit.Kod})
В основном отчете:
Formula2:=FetchNumberVar("post")
Из основного отчета в подотчет можно передать значение с помощью LinksSubreport, указав это поле и связав его с параметром в подотчете.
Для Crystal V.8 нужно для этой цели использовать разделяемые(Shared) переменные.
Пример:В подотчете:
Shared numberVar OstN:=sum(...);
В основном отчете:
Shared numberVar OstN;
OstN



Q: Как получить итог по странице?


A: В FormatSection->Supress для Detail-секции пишется текст (или в эту же секцию вставляется и скрывается формула аналогичного содержания):
NumberVar PageTotal;
NumberVar PN;
If PN<PageNumber then
( PN:=PageNumber; PageTotal:=0; );
If not IsNull({...}) then
PageTotal:={...}+PageTotal;
no;
в PageFooter вставляется FormulaFiled следующего содержания:
WhilePrintingRecords;
NumberVar PageTotal;
PageTotal;



Q: Как проверить значение поля на Null?


A: Можно использовать функцию isnull(). Но надо иметь в виду, что в File/Report Options в поле Convert NULL Field to Default не должно быть галочки, иначе значения Null будут преобразованы в 0 или "" в зависимости от типа поля.



Q: Как сделать, чтобы Cross-Tab переносился на следующую страницу, если он не входит по ширине?


A: Если Cross-Tab не в подотчете, то Crystal делает это автоматически



Q: Как сделать, чтобы заголовок группы был раньше шапки на странице?


A: 1. Делаем две секции одинакового размера: PageHeader и GroupHeader#1, где шапку в Page делаем в нижней части, а заголовок группы в верхней части соответствующей секции.
2. PageHeader делаем Underlay с формулой:
NumberVar PG;
PG<>GroupNumber;
Формулу делаем для того, чтобы секция наезжала только тогда, когда начало группы, т.е. имеется заголовок группы, а когда просто начало страницы - не нужно наезжать. Для этого в Details в Supress делаем формулу:
NumberVar PG;
PG:=GroupNumber;
no;
Другой вариант
1. Делаем секцию PageHeader с шапкой (без линий) и в Supress для нее делаем формулу, как в п.2 из предыдущего способа.
2. Делаем еще одну подсекцию в GroupHeader(после остальных подсекций) с копией шапки и с линиями.
3. В Details в Supress пишем формулу, как в предыдущем методе.
Или может быть в данном случае подойдет следующий, третий вариант: в Option для группы задаем - повторять заголовок на каждой странице и шапку помещаем в GroupHeader.



Q: Как сделать нумерацию записей внутри группы?


A: Нужно сделать переменную (например, NumberVar n;), которая обнуляется в GroupHeader и увеличивается на 1 в Detail. Для этого использовать формулы в соответствующих секциях (переменная должна быть объявлена в обеих формулах). Не забыть поставить WhilePrintingRecords.



Q: Как в Crystal Report 7 или 8 вызвать хранимую процедуру из SQL Server 7?


A:

:необходимо чтобы процедура имела возвращаемые параметры

в закладке SQL диалога Options следует включить опцию Stored Procedures, после этого в CR имя процедуры будет восприниматься как имя таблицы, а возвращаемый параметр как колонка



Q: Как в Crystal сделать Cross


A: Cross Table строится только по однородным данным (в пределах одной группы) с итогами по ним (например, только по оборотам). Для построения Cross Table с неоднородными данными нужно использовать временную таблицу, подготовленную особым образом. В этой таблице должно быть поле (символьное), содержание которого будет использоваться для группировки данных по колонкам (или рядам). Заполнять это поле нужно с учетом того, чтобы в результате сортировки данные в Cross Table были расположены нужным нам образом, для чего можно использовать русские буквы, латинские буквы одинаковые по начертанию с русскими, пробелы, цифры (при сортировке сначала идет пробел, затем латинские буквы и далее русские). Например, для построения Cross Table из вопроса (для примера, строки - аналитика по счету, колонки - обороты по Д корсчета) таблица будет иметь такие поля: Analit, Сolumn, Summa, где Analit будет использоваться для строк, Сolumn - для колонок, Summa - для суммируемых данных. Поле Сolumn должно иметь такие значения: "Cальдо начальное", "Д корсч1", "Д корсч2",..., "Итого по Д", "Cальдо конечное" (их может быть несколько - для каждой из аналитик). Чтобы порядок был именно таким в названии "Cальдо начальное" первую букву надо сделать латинской, остальные поля сортируются естественным образом. Поле Summa должно быть заполнено соответствующими данными (сальдо, обороты, итоги). Поскольку итоги в такой таблице уже подсчитаны, нужно будет в Cross Table скрыть стандартные итоги. Иногда приходится использовать несколько пробелов для обеспечения нужной сортировки, когда это используется для строк, то для того, чтобы не было явно заметной лесенки, можно поле выровнять по правому краю, а в некоторые названия (например, слишком короткие) справа добавить нужное количество пробелов.



Q: Как вставить в отчет суммы по Group Footer… Как добавить "некросстабулярные" столбцы…


A: добавить дополнительные объекты "внутрь" crosstab невозможно. Все вычисления следует проводить либо вне объекта crosstab либо при помощи формул.



Q: Как выровнять поля в отчете?


A: Во-первых, привязка объектов к сетке (File/FileOptions/Layout закладка поле SnapToGrid). Во-вторых, есть горизонтальные и вертикальные GuideLines, к которым можно выровнять объект. (Размеры объектов, привязанных к таким линиям можно изменить одновременно перемещением линии). Лучше эти линии сделать видимыми в Disign и невидимыми в Preview (меню View или в File/FileOptions/Layout есть).



Q: Как вывести отчёт в несколько колонок (столбцов)?


A: Для этого необходимо сделать следующее:
1. В редакторе Section Expert (щелчок правой клавишей по секции Details ->Format Section…; меню Format->Section… или кнопка Section Expert) для секции Details (это можно сделать только для неё) установить признак Format with Multiple Columns.
2. На появившейся вкладке Layout установить необходимые значения: ширину и высоту секции, расстояние между секциями по горизонтали и вертикали, порядок прохождения записей, и форматировать ли группировку, если она есть.
Для примера можно выбрать тип отчёта Mail Label и посмотреть заданные там значения.



Q: Какие есть проблемы с экспортом в Word и Excel из Office 97?


A: При экспорте из Crystal в формат Excel 5.0, Excel 97 открывает такой файл нормально и выглядит он в нем нормально (хотя эксперимент не был чистым, т.к. на машине были установлены Office 95 и Office 97).

При экспорте из Crystal в формат Word, Word 97 не может прочитать русские шрифты. Что интересно, если экспортированный файл сначала открыть и сохранить с помощью Word 7.0, то после этого Word 97 читает его нормально. Поиск более свежих dll для экспорта ничего не дал, экспорт из Crystal 7.0 в формат Word имеет те же результаты.

Вариант решения проблемы: экспортировать в файл формата rtf, который затем открывать с помощью Word 97, тут даже есть некоторые плюсы, в том смысле, что видны рамки (правда, тоже не без особенностей).



Q: Какие механизмы для интеграции отчётов в приложения можно использовать в CR 10?


A: Для разработки клиентских приложений следует прибрести редакцию CR 10 Developer, а для разработки Web-приложений - редакцию CR 10 Advanced Developer. Механизмы следующие:

SDK просмотра, создания и изменения отчётов (Java, .NET и COM) Custom JSP Tag Library (для просмотра) Visual Control Library (VCL) (для Delphi 6 и 7, C++Builder 6) Report Designer Component (RDC) (COM-технология для приложений Win32) Crystal Report Engine API (API для приложений Win32)



Q: Какие правила нужно соблюдать, чтобы сделать отчеты переносимыми?


A: Нельзя оставлять флажок File/Save report with data! Иначе отчет будет не переносимым. Даже если изменить в настройке отчета Database/Set Location, данные будут пытаться взяться из старого места.
Для ODBC-источников если отчет будет сохранен без данных, то он будет нормально просматриваться через crrt, но не будет через Preview. чтобы просмотреть его через Preview нужно изменить установки Database/Set Location кнопкой Logon Server, если он это не предложит автоматически.
В отчете зашивается для ODBC:
Server Type ОDBC - <имя источника>
Database - <путь> <имя базы>
для MS SQL:
Microsoft SQL Server Server Name - <имя источника> <имя сервера>
UserID - <имя пользователя>



Q: Какие проблемы со шрифтами есть в Crystal?


A: 1. При вставке элементов TextField одинакового размера шрифта могут смотреться как элементы с разным размером шрифта. Проблемы получившиеся при настройке с разным размером шрифта не исчезают.
2. Часть символов строки съедаются. От типа шрифта слабо зависит. По-видимому, это происходит из-за настройки и просмотра отчета на машинах с разными установками экрана "крупный шрифт" / "мелкий шрифт". Рекомендуется настраивать отчет при установке "крупный шрифт" или проверять при zoom=120%.
3. Надписи шрифтом Times New Roman выглядят как иероглифы. Это не влияет на переменные типа FormulaField с этим шрифтом. Это чаще происходит на машинах где не установлен Crystal Reports. Причиной является неправильное преобразование Crystalом шрифтов типа "Times New Roman (Кириллица)" в шрифты типа "Times New Roman Cyr". Чтобы избежать этого, нужно добавить в файл win.ini в раздел [Font Substitutes] строку
Times New Roman, 0=Times New Roman,204
Рекомендуется ограничить использование в тексте шрифта Times, заголовки документов создавать как Formula Field.
4. Строки с курсивом при просмотре переносятся нормально, а при печати часть строки съедается. Рекомендуется не использовать курсив для строк с автоматическим переносом, а для остальных строк оставлять запас.



Q: Каким образом можно распространять отчёты Crystal Reports?


A: Таких способов пять:
1. Публикация в WEB, используя Crystal Enterprise.
2. Экспорт в один из поддерживаемых форматов: txt, doc, xls, pdf, html, xml и др.
3. Интеграция в приложение, используя какую-либо среду разработки: Visual Basic, Visual C++, Delphi и C++Builder, PowerBuilder и др.
4. Просмотр отчётов с сохранёнными данными после установки на компьютере утилиты Crystal Offline Viewer.
5. Распространение через утилиту Compiling Expert для версии CR 8.5 и ниже:
Для версий CR до 7-й включительно компоненты компиляции и распространения отчётов входили в состав CR, а для версий 8 и 8.5 поставлялись отдельно.
Следует сказать, что для способов 3, 4 и 5 при первоначальном запуске отчёта требуется установка необходимых библиотек CR (утилита Crystal Offline Viewer делает это сама), занимающих порой достаточно много места.



Q: Когда следует использовать подотчёты в отчётах?


A: Если нет другой возможности сформировать нужный отчёт. Т.к., во-первых, подотчёты замедляют выполнение отчёта. Во-вторых, в Crystal Enterprise такие отчёты не кэшируются. Если всё же используются подотчёты, то эффективнее делать их on demand - если позволяет формат отчёта. Часто подотчёты используют там, где можно было бы обойтись группировкой.

Итак, когда следует применять подотчёты:

Отчёт объединяет данные из различных источников (из различных таблиц, из различных баз данных и т.п.). Одни и те же данные должны быть представлены в отчёте разными способами. Например, сгруппированные по одному признаку, а затем сгруппированные по другому (пример: сделать содержание для отчёта). Когда не важно кэширование и/или производительность. Тогда имеет смысл делать подотчёты для каких-то стандартных секций отчёта. Например, стандартная корпоративная "шапка" документов с фамилиями, логотипами и т.п. Тогда подотчёт д.б. внешним файлом, а в отчёте установить признак Re-import Subreport…

Нелишне напомнить, что подотчёт в подотчёте не допускается.



Q. Lotus Domino как источник данных?


A. Данные Lotus Domino могут быть прочтены Seagate Crystal Reports посредством ODBC или с использованием приямого драйвера, входящего в поставку. Для Windows 95, Windows 98 и Windows NT, слой Lotus Domino DBMS включает три файла:

Nsql32.dll Nsqlv32.dll Nsqlc32.dll

Эти компоненты Lotus Domino должны быть инсталлированы на клиентской машине.

Для доступа к Lotus Domino при инсталляции Crystal Reports следует выбрать Lotus Domino, при этом инсталлируются дополнительные файлы P2snote.dll and P3slnen.dll в каталоги Windows или Winnt Crystal.

Nextpwd.dll и Lotus API DLL (Lcppn201.dll) инсталлируются в выполняемый каталог Lotus Domino.

В файл Notes.ini добавляется строка: EXTMGR_ADDINS=extpwd

Выполняемый каталог и каталог данных добавляются в Lotus Domino PATH.

В таблице приведено сравнение доступа к Lotus Domino посредством ODBC и прямого драйвера.

Feature

Native driver

ODBC driver

Logon to different servers

Yes

Yes

Use Lotus Domino client extension manager to pass password to Lotus Domino client

Yes

No

Obtain list of available databases (including subfolders)

Yes

Yes

List database filename

Yes

Yes

List database title

Yes

No

Report on Views and Forms

Yes

Yes

Distinguish between Views and Forms with same name

Yes

No

Omit Forms with no fields

Yes

No

Omit Subforms (cannot be used independently)

Yes

No

Text fields shown as strings

Yes

Yes

Text fields shown as memos

Yes

No

Rich Text fields shown as strings

Yes

No

Rich Text fields shown as memos

Yes

Yes

Computed values for composed fields

Yes

No

Multiple value fields shown as first value with proper type

Yes

No

Multiple value fields shown as string and memo

Yes

No

Converting report from other driver

Yes

Partial

Left outer join on linked tables

Yes

Yes

Other joins on tables

No

Yes



Q: Можно ли добавить несколько столбцов crosstab с различными формулами?


A: Да. Для создания новой формулы в crosstab в диалоге Cross-Tab кликните по кнопке New Formula



Q: Можно ли метки строк расположить строками?


A: В объекте crosstab в качестве меток строк и колонок используется значения полей базы данных. Для выбора поля, значение которого используется в качестве заголовка, нужно в диалоге Cross-Tab выбрать наименование поля из списка Fields и кликнуть по кнопке Rows или Columns соответственно.



Q: Можно ли поправить в Crystal


A: Нет, такой возможности нет и, видимо, это принципиальное ограничение.



Q: Можно ли в формуле при использовании


A: Да, можно. При этом операторы в предложении Then (это справедливо и для Else) должны быть заключены в круглые скобки и разделены точкой с запятой (после последнего оператора, перед закрывающей скобкой, точки с запятой не должно быть!).
Пример:
numberVar s ;
numberVar k ;
If {MBAnAccRptM.Prizn}='Д'
Then
( s:=s+{MBAnAccRptM.Summa};
k:=k+{MBAnAccRptM.Kol} )
Else
( s:=s-{MBAnAccRptM.Summa};
k:=k-{MBAnAccRptM.Kol} )



Q. Не могли ли бы Вы подсказать


A. документации на русском языке не существует. Наиболее подробное описание использования Crystal Reports 6.0 (7.0) дается в статьях Маклакова, опубликованных в журнале "Компьютер Пресс" №1,2,4 за 1998 г. C материалами этих статей Вы можете ознакомиться на нашем сайте в разделе “Публикации”.

Q: Где найти документацию по параметру DrillDownContext функции PESearchForText?

A: Функция PESearchForText не поддерживается API и удалена из документации (Developer's help)

Q: Как преобразовать число в формат строки со стандартным представлением как телефонного номера?

A: Используйте функцию Picture из набора дополнительных функций.

Q: В Detail секции главного отчета сидит подотчет, и когда содержимое этого подотчета не вмещается в свободное пространство листа, программа начинает печать подотчета с нового листа. В результате остается достаточно свободного места на предыдущем листе. Как побороть эту проблему?

A: Для экономии места кликните по подотчету правой кнопочкой, выберите Format Subreports и в закладочке Common отключите опцию Keep Object Together.

Q: У нас проблема с использованием Crystal Reports 6.0, 7.0 для данных в формате InterBase 5.0:

Не получается в отчетах использование данных из нескольких таблиц одной базы данных, связи устанавливаются в окне Visual Linking Expert вручную правильно, но при вводе в секцию Detail связанных полей из разных таблиц при попытке увидеть отчет выдается сообщение:

ODBC error: [Visigenic][ODBC InterBase 4.x Driver]

Syntax error or access violation

A: Существует два пути решения проблемы.

После связывания таблиц в Visual Linking Expert войти в меню Database/Show SQL Query и исправить SQL-запрос вручную, например:


SELECT
DEPARTMENT.DEPARTMENT,
EMPLOYEE.FIRST_NAME, EMPLOYEE.LAST_NAME
FROM
{ oj DEPARTMENT DEPARTMENT INNER JOIN EMPLOYEE EMPLOYEE ON
DEPARTMENT.DEPT_NO = EMPLOYEE.DEPT_NO}
На
SELECT
DEPARTMENT.DEPARTMENT,
EMPLOYEE.FIRST_NAME, EMPLOYEE.LAST_NAME
FROM
DEPARTMENT, EMPLOYEE
WHERE
DEPARTMENT.DEPT_NO = EMPLOYEE.DEPT_NO

Другой путь предполагает выполнение следующих шагов:


а) Скачать Odbcregs.zip с сайта http://community.seagatesoftware.com.

б) скопировать P2sodbc.dll из zip-файла в C:\Windows\system или C:\Winnt\system32. Убедитесь, что на Вашей машине существует только одна версия этого файла - P2sodbc.dll - 6.0.0.72.

в) Скопируйте файл Outjoin.reg во временную директорию. Дважды щелкните по этому файлу для редактирования реестра.

г) В регистре найдите HKEY_CURRENT_USER -> SOFTWARE -> SEAGATESOFTWARE -> CRYSTALREPORTS -> DATABASEOPTIONS -> OUTERJOIN.
И переместите ISCDRV32 из списка "OJSyntax" в "OpenIngres".



Q. Не получается использовать русский текст в формуле для Crystal Reports 7.0.


A. Да, действительно, такая проблема существует. Обойти ее можно, написав фрагменты текста на русском языке, например, в Блокноте и перетащить его в Formula Editor через Clipboard.



Q: Нет возможности складывать


A: Одна из причин - настройка отчета делается разработчиком, у которого в компоненте Пользователей задано в поле "Перекодировать пароль" - ДА. При коннекте с сервером он указывает пароль для входа в КАС, а фактический пароль для соединения с сервером он не знает. Для Разработчика нельзя указывать перекодировку пароля!



Q: Отчет, который раньше работал


A: Это может быть в такой ситуации: работаем одновременно с двумя КАС с разными базами на разных серверах, сначала вошли в первую и просмотрели отчет - все нормально, зашли во вторую, зарегистрировавшись в другой базе на другом сервере, далее вернулись в первую и снова пытаемся просмотреть отчет - возникает ошибка 599. Нужно выгрузить XPassw и повторить просмотр отчета.



Q: Отчет состоит из трех cross-tab


A: Для корректного размещения cross-tab используйте множественные секции, например Page Footer a и Page Footer b. Для создания секций используйте редактор Section Expert.



Q: Почему формула, выводящая переменную


A: Нужно обязательно при вставке переменной использовать функцию WhilePrintingRecords:
Пример:
WhilePrintingRecords;
numberVar kol;
kol



Q: Почему не работает связь с подотчетом, хотя она и указана в Subreport Links?


A: При изменении SQL-выражения в подотчете вручную, связь отчета с подотчетом может нарушиться, чтобы восстановить связь нужно удалить ее, а затем сделать снова (пункт Edit Subreport Links контекстного меню подотчета)



Q: Почему при подсоединении к ODBC-источнику из таблиц Excel не видно таблиц (листов Excel)?


A: Нужно установить флажок File\Options\SQL\System tables. В других средствах, например, MS Query или Borland Database Explorer тоже нужно ставить аналогичную опцию.



Q: Почему при поиске (Find) в


A: Какого-то ограничения на поиск (по числу записей) в отчёте нет. Надо только иметь в виду, что поиск осуществляется текста, а не числа. Например, попытавшись найти в отчёте число 1000, Вы его скорей всего не найдёте, т.к. по умолчанию в отчёте оно будет представлено как 1 000, т.е. с пробелом в разрядах (который обычно задаётся в установках ОС). Поэтому этот факт нужно учитывать при поиске в отчёте. Но в Crystal Reports можно задать расширенный поиск, и искать уже конкретно числа.



Q: Почему при сложении значений двух полей значение результирующей формулы не печатается.


A: Скорее всего, дело в том, что в File/Report Options в поле Convert NULL Field to Default не стоит галочки, т.е. Null значения не преобразуются по умолчанию в 0 (или в "" для символьных значений). Поэтому любое действие Null-поля со значащими полями дает результат - Null. Решение вопроса - задать преобразование Null значений по умолчанию (в File/Report Options в поле Convert NULL Field to Default поставить галочку).



Q: Почему просмотрщик отчетов не коннектится к SQL серверу под Windows NT?


A: Такое происходит, если коннект к SQL-серверу производится без указания имени сервера (параметр SERVERNAME в настройке BDE пуст, этот способ соединения используется в случаях, когда NT-Server установлен StandAlone, и компьютер не подключен к локальной сети). В этом случае для соединения с сервером используются параметры соединения, сохраненные в отчете на момент последнего сохранения, а эти параметры не соответствуют истине, если отчет настраивался на другом компьютере с использованием удаленного (не локального) SQL-cервера.



Q: Почему в структуре таблицы


A: Скорее всего, эти поля были добавлены в таблицу уже после того, как был настроен отчет. Crystal опрашивает структуру таблицы один раз при ее добавлении. Обновить сведения о структуре таблицы можно через пункт Database/Verify Database.



Q: Пожалуйста, подскажите, как импортировать текст в формате RTF в отчет?


A: Импортируйте текст в текстовый объект. (В режиме редактирования текстового объекта щелкаете правой кнопкой мыши - далее по указаниям)



Q. Работает ли Crystal Reports с Lotus Notes?


A. Да, работает. Crystal Reports может как создавать отчеты, используя Lotus Domino в качестве источника данных, так и экспортировать данные в Lotus Domino. Экспорт в Lotus Domino. Seagate Crystal Reports позволяет экспортировать данные, используя клиента Lotus Domino версии 3.0 и выше. Клиент Lotus Domino OS/2 не поддерживается.



Q: Разработанный на Crystal Reports


A: Самая распространенная причина такой ошибки - при разработке отчета не убрали имя базы данных и имя владельца таблицы в пункте меню SetLocation.

Еще одна часто встречающаяся причина - в базе данных нет одной или несколько таблиц, использующихся в отчете. Или в отчете используются поля, которых нет в таблицах.

Для получения более детальной информации о причинах ошибки в конкретном случае рекомендуется через SQL Trace (или Profiler в MS SQL 7.0) получить проблемный запрос и выполнить его через ISQL/w (Query Analyzer) под тем пользователя, от имени которого выполняется отчет. Еще один путь получения дополнительной информации - в каталоге CRYSTAL формируется файл SQLSVR.ERR, где содержится текст этой ошибки.



Q: Установил Crystal Reports 6.0. Что необходимо задать в его конфигурациях?


A: Отключить SmartLinks (File\Options\DataBase-закладка);
отключить сохранение данных в отчете (File\Save Data With Report);
установить русский шрифт по умолчанию для полей (File\Options\Fonts-закладка);
настроить форматы полей (File\Options\FIelds-закладка);
установить параметры для подключения к серверу (File\Options\SQL-закладка).



Q: В CR8 (как и в седьмом) есть


A: Нет, но ее можно написать в Delphi или VB и подключить как UFL.



Q: В Crystal Reports шаг сетки


A: В Crystal Reports такой установки нет, но там используются региональные установки Windows. Для того чтобы использовались сантиметры, необходимо в Настройке Панели_управления запустить Язык_и_стандарты и выбрать закладку "Числа", в поле "Система единиц" установить "Метрическая" (Metric).



Q: В графике даты показываются


A: Нужно в отчете сделать группу по полю типа Дата, по которому строится график, например, "on each day" и скрыть эту группу.



Q: В отчете используется поле


A: В формате числового поля (Format Editor по правой кнопке мыши) имеются атрибуты: Decimals-задает число знаков в дробной части для отображения и Rounding-задает число знаков для округления. В данном конкретном случае в этих атрибутах было установлено соответственно "1.000" и "0.01", т.е. происходит округление дробной части до 2 знака, а отображается три знака. Для исправления ситуации нужно в атрибуте Rounding установить значение с тем же числом знаков после точки, что и в Decimals, т.е. "0.001"



Q. В отчете присутствует sub-report


A: Значение переменной зависит от расположения, потому что Crystal Report - многопроходный генератор и подотчет выполняется на последнем этапе. Значение переменной, присваеваемое в подотчете, будет определено только в секциях ниже той, в которой размещен подотчет, и то при условии использования функции WhilePrintingRecords



Q: В подотчете объявлена переменная


A: Может быть, Вы неверно определили переменные (разное имя или разный тип).



Q: В таблице есть поле типа "datetime"


A: Необходимо выполнить следующее:
1. В меню File/Report_Options в поле Convert Date-Time_Field выбрать "to Date-Time".
2. Вставить поле из базы типа Date-Time и в свойствах поля (по правой кнопке мыши) в Format в поле Order выбрать "Time".
Но имеется следующая особенность: при использовании библиотеки P2ssql.dll версии 8.0.0.21 и 7.0.0.44 преобразование поля типа Datetime в Date-Time происходит без проблем, а при использовании меньшей версии происходит преобразование в строку. При просмотре поля из отчета, сделанного с P2ssql.dll версии 8.0.0.21 и 7.0.0.44, в меньшей версии происходит неправильное преобразование в Date-Time (например дата 28.08.2000 представляется в виде DateTime(-4713,01,01,00,00) , а правильно д.б. DateTime(2000,08,28,00,00))



Q: Вопрос: Как вставить номер страницы?


A: Следует вставить специальное поле page number в секцию page footer.