powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Динамический CrossView в FastReport
2 сообщений из 2, страница 1 из 1
Динамический CrossView в FastReport
    #33306480
aRaLeKiN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте!
Столкнулся с проблемой при динамическом создании отчета в FastReport. Облазил форум, хелп, но ничего не нашел по своей проблеме.
Необходимо динамически создать отчет, исходя из каких-то моих данных. Набор данных может меняться произвольно.
Создаю отчет, так как сказано в помощи:
Код: 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.
28.
29.
30.
31.
32.
33.
.....// глобальные переменные
var
  Form1: TForm1;
  cross : TfrxCrossView;
  Page : TfrxReportPage;
implementation
.....
Procedure Tform1.BuildRep;
Begin
frReport.Clear;

Page := TfrxReportPage.Create(frReport);
Page.CreateUniqueName;
Page.SetDefaults;
Page.Orientation := poPortrait;

Cross := TfrxCrossView.Create(Page);
Cross.CreateUniqueName;
Cross.Top :=  20 ;
Cross.Left :=  20 ;
Cross.width :=  95 ;
Cross.Height :=  19 ;

Cross.ShowColumnHeader := true;
Cross.ShowColumnTotal := false;
Cross.ShowRowHeader := false;
Cross.ShowRowTotal := false;

Cross.RowLevels :=  1 ;
Cross.ColumnLevels :=  1 ;
Cross.CellLevels :=  1 ;

End;
При нажатии на кнопку Превью вызывается дизайнер :
Код: plaintext
1.
2.
3.
4.
procedure TForm1.btDesignClick(Sender: TObject);
begin
frReport.DesignReport;
end;
В нем видно, что все создалось как надо. Есть отчет, страничка и CrossView с указанными свойствами.
Далее идет вызов самого отчета:
Код: plaintext
1.
2.
3.
4.
5.
procedure TForm1.btShowClick(Sender: TObject);
begin
table1.Open;
frReport.ShowReport;
end;
На обработчике события OnBeforePrint висит следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.frReportBeforePrint(Sender: TfrxReportComponent);
var
  i, j: Integer;
begin
    Table1.First;
    i :=  0 ;
    while not Table1.Eof do
    begin
      for j :=  0  to Table1.Fields.Count -  1  do
        Cross.AddValue([i], [Table1.Fields[j].DisplayLabel], [Table1.Fields[j].AsString]);
      Table1.Next;
      Inc(i);
    end;

end;
То есть все тоже самое, что и в примере.

Так вот при frReport.ShowReport вылетает ошибка:
EVariantTypeCastError: "Could not convert variant of type (String) into type (Double)"

Если оставить тот же самы обработчик OnBeforePrint, но в дизайнере скинуть CrossView на отчет, то все работает как надо, выводятся данные, красота вобщем.
Еще одно наблюдение.... После динамического создания отчета, сохраняю его в fr3 формате (читай XML) и сохраняю отчет созданный в дизайнере. Сравниваю. Вижу что нет никаких отличий, кроме поля "PropData" у объекта "TfrxCrossView". В нем шестандцатитеричная муть, которая и отличается.
Отсюда возникает несколько вопросов:
1. Что я делаю не так, поправьте пожалуйста.
2. Что хранится в PropData у XML`а?
3. Почему возникает ошибка конвертации?
4. Как сделать правильное динамическое создание отчета с CrossView?
Заранее спасибо!
ЗЫ.. на оффсайте молчат почему-то =(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Динамический CrossView в FastReport
    #36095232
MegaAlik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос: При построении отчета с кросс таблицей появляется ошибка «Could convert variant of type (String) into type (Double)».

Ответ

Если в ячейке кросс таблицы используются строковые значения, то нужно отключить агрегатную функцию в редакторе «Кросс - таблицы».

http://www.fast-report.com/ru/faq/faq.php?ID=393
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Динамический CrossView в FastReport
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]