Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.12.2006, 10:41
ozornik ozornik вне форума
Прохожий
 
Регистрация: 27.10.2006
Сообщения: 13
Репутация: 10
По умолчанию Отчеты

Вот такая проблема:
Хочу создать отчет "главный-подчиненный" с помощью двух таблиц(одна главная, другая подчиненная). Связи между ними есть, но когда выбираю пункт "Tools-ReportWizards-Master/Detail Report" в проге RaveReports вылетает сообщение, что нужно создать 2 DataView, хотя они у меня есть. И еще - когда пытаюсь создать второй DataView, вылетает ошибка, что он уже создан, хотя это не так.
И еще такой вопрос - почему при создании нового(простого) отчета при создании нового DataView, вылетает ошибка, что он как бы уже создан, и вместо всех полей в списке оказывается только одно(первое)?

Последний раз редактировалось ozornik, 11.12.2006 в 06:48.
Ответить с цитированием
  #2  
Старый 11.12.2006, 15:17
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Напиши подробнее как ты подключаешь отчет
Ответить с цитированием
  #3  
Старый 11.12.2006, 19:50
ozornik ozornik вне форума
Прохожий
 
Регистрация: 27.10.2006
Сообщения: 13
Репутация: 10
По умолчанию

Значит так:
Размещаю на форме Table1, DataSource1, DBGrid1, RvDataSetConnection1. Подключаю к Table1 файл бд, указываю свойство RvDataSetConnection.DataSet - Table1 и запускаю RaveDesinger. Создаю новый DirectDataView, указываю соединение RvDataSetConnection1 и жму Finish. Вот тут и возникает проблема - вылетает сообщение о том, что яко бы уже DataView1 уже создан, хотя отчет я создаю с нуля, а в списке полей находятся одно или два первых поля.
Я уже все перепробовал, но так и не понял, в чем проблема.
Ответить с цитированием
  #4  
Старый 11.12.2006, 21:42
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Хм.. Все верно. Должно работать.
Попробуй подключить Rave напрямую к таблице без Delphi.
  • Запускаешь Rave Designer
  • На всякий случай делаешь New Project
  • Создаешь новое соединение - New Data Object | DataBase Connection
  • Выбираешь BDE (я так понял ты именно BDE используешь)
  • Настраиваешь параметры подключения
  • На вкладке Test проверяешь соединение. При удачном подключении появляется список таблиц.
  • Нажимаешь ОК
  • Создаешь новый Driver Data View
  • Выбираешь присоединенную Database1
  • Должен появится редактор запросов (Query Editor). Работать с ним достаточно просто - перетаскиваешь нужную таблицу из колонки Tables на рабочую область, выбираешь нужные поля. Если необходимо перетаскиваешь вторую таблицу и устанавливаешь связь путем Drag-n-Drop нужных полей. Можно написать запрос вручную, нажав кнопку Editor.
  • Все. В разделе Data View Dictionary | DriverDataView появляются поля таблиц.
Если возникает ошибка, напиши на какой стадии

Последний раз редактировалось ilang, 12.12.2006 в 13:40.
Ответить с цитированием
  #5  
Старый 12.12.2006, 16:25
ozornik ozornik вне форума
Прохожий
 
Регистрация: 27.10.2006
Сообщения: 13
Репутация: 10
По умолчанию

Ошибок при работе не возникает, но есть пара вопросов.
При формировании отчета не получается присвоить компоненту свойство DataView, поскольку там ничего не отображается(хотя соединение есть).
И еще - каким образом можно соединить отчет с программой, т.к. этот отчет работает при помощи запроса, а на выходе должен получиться отчет с определенным набором данных.
Ответить с цитированием
  #6  
Старый 12.12.2006, 18:36
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Цитата:
Сообщение от ozornik
При формировании отчета не получается присвоить компоненту свойство DataView, поскольку там ничего не отображается(хотя соединение есть).

Не совсем понял о каком компоненте ты говоришь.

По поводу второго вопроса:

Для соединения твоего приложения и Rave отчета имеются неколько компонентов:

-TrvDataSetConnection - для подсоединения наследников TDataSet к DirectDataViews
-TrvTableConnection - для подсоединения компонентов типа TTable к DirectDataViews
-TrvQueryConnection - для подсоединения компонентов типа TQuery к DirectDataViews
-TrvCustomConnection - для подсоединения не TDataSet данных (массивы, файлы и т. д.)

Теперь Давай снова по пунктам. )
  • Помещаем на форму TTable
  • Меняем ей имя на MyTable
  • Подключаем к необходимой таблице
  • Открываем набор данных (Active=True)
  • Помещаем на форму компонент TrvDataSetConnection
  • Меняем ему имя на MyConnection
  • Устанавливаем свойство MyConnection.DataSet = MyTable
  • Запускаем Rave Designer
  • Создаем новый проект (File | New Project)
  • Создаем новое подключение File | New Data Object | Direct Data View и выбираем MyConnection
  • В разделе Data View Dictionary появляется DataView1 со всеми полями таблицы
  • Меняем имя c DataView1 на MyDataView
  • С помощью помощника создаем макет отчета (Tools | Report Wizards | Simple tables), в появившемся диалоге выбираем MyDataView и настраиваем поля, которые будут включены в отчет)
  • Запускаем отчет для проверки (F9)
  • Сохраняем макет в файле MyReport.rav
  • Закрываем Rave Designer
  • Возращаемся в Delphi и помещаем на форму компонент TRvSystem
  • Меняем ему имя на MyRvSystem
  • Помещаем на форму компонент TRvProject
  • Меняем ему имя на MainRaveProject
  • В свойстве ProjectFile указываем файл MyReport.Rav, а в свойстве Engine - MyRvSystem
  • Помещаем на форму кнопку и на событие OnClick пишем: MainRaveProject.Execute
  • Запускаем прогу. Клацаем кнопку. )

Еще вопросы есть? )
Ответить с цитированием
  #7  
Старый 12.12.2006, 19:00
ozornik ozornik вне форума
Прохожий
 
Регистрация: 27.10.2006
Сообщения: 13
Репутация: 10
По умолчанию

Вот вопрос:
"Создаем новое подключение File | New Data Object | Direct Data View и выбираем MyConnection
В разделе Data View Dictionary появляется DataView1 со всеми полями таблицы"

Вот как раз на этих двух этапах возникает эта вся заморочка. Появляется в списке DataView1, но в списке полей находится только одно поле, хотя в этой таблице, которую я подключаю, их 8. Причем при создании вылетает ошибка, что DataView1 уже создан, хотя ни одного DataView пока нет.
Как думаешь, может просто RaveReports по-страшному глючит?
Ответить с цитированием
  #8  
Старый 13.12.2006, 17:55
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Вот держи. Попробуй переустанови. У меня рааботает.
Rave 6.5
Ответить с цитированием
  #9  
Старый 21.03.2007, 12:15
gatart gatart вне форума
Прохожий
 
Регистрация: 14.01.2007
Сообщения: 26
Репутация: 10
По умолчанию Товарищи Проблема

вот с чем столкнулся:

procedure TForm1.PDFButtonClick(Sender: TObject);
begin
RvRenderPDF1.EmbedFonts := True;
MS.Create; //обнулить данные в потоке
with RvNDRWriter1 do
begin
SetFont('LMUkrLine',12); //установить шрифт
Start; //начинаем писать
Println('Привет всем! Меня зовут Windows.'); //пишем с переводом на след. строку
Println('Я не дружу с русскими шрифтами.');
Finish; //конец записи
end;
RvRenderPDF1.PrintRender(MS,'D:\Test\test'); //поток в файл
end;

вот с этим шрифтом все по русски!!!
если же не этот шрифт а другой стандартный какойнить, по в выводе такие каракули это жесть, выход вроде просто копировать этот шрифт при установке проге ну или при запуске в папку виндовс\фонтс .... НО!!!! а если юзер не админ на компе то как тогда быть можно ли указать путь к этому шрифту или воопще кто встречался с проблемйиероглифов в Rave Report (5.0.04 (VCL7) - у меня такая версия).
Ответить с цитированием
  #10  
Старый 21.03.2007, 16:52
gatart gatart вне форума
Прохожий
 
Регистрация: 14.01.2007
Сообщения: 26
Репутация: 10
По умолчанию почему

при этом при создании отчетов в HTML и ТХТ все в порядке каой был бы шрифт я не выбрал почему???????????
Ответить с цитированием
  #11  
Старый 21.03.2007, 18:53
gatart gatart вне форума
Прохожий
 
Регистрация: 14.01.2007
Сообщения: 26
Репутация: 10
По умолчанию товарищи

а что ваще никто никак не знает ничего?
Ответить с цитированием
  #12  
Старый 21.03.2007, 19:44
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Кодовое слово UNICODE, и еще - новый вопрос - новая тема, тему не выделяю - предупреждение делаю, не обессудь
Ответить с цитированием
  #13  
Старый 21.04.2007, 13:50
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Н-да.. UNICODE конечно хорошее слово.. Но вот куда его в данной ситуации применить - загадка )
Ответить с цитированием
  #14  
Старый 13.05.2007, 10:53
MaiX MaiX вне форума
Прохожий
 
Регистрация: 13.05.2007
Сообщения: 1
Репутация: 10
По умолчанию

А как с помощью Rave взять какое нить значение переменной "х" из программы и вывести это значение в отчете:
Ответить с цитированием
  #15  
Старый 13.05.2007, 15:01
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Цитата:
Сообщение от MaiX
А как с помощью Rave взять какое нить значение переменной "х" из программы и вывести это значение в отчете:

Есть несколько способов сделать это. Приведу два из них.
1. Использовать компонент TRvCustomConnection. Он работает наподобие других компонентов соединения с данными, но управлять строками отчета придется вручную (события OnGetCols, OnGetRows - читай документацию к Rave).
2. Непосредственно изменять свойства объектов, имеющихся в отчете. Для работы с проектом и его объектами реализовано несколько классов - TRaveProjectManager, TRaveReport, TRavePage и т. д.

В общем алгоритм такой:
  • Активируем отчет (TRvProject.SelectReport)
  • Получаем доступ к нужному объекту в отчете (TRaveProjectManager.FindRaveComponent)
  • Меняем свойства нужного объекта

Пример.
  • создаем новый отчет в Rave Designer;
  • кидаем на страницу компонент Text (вкладка Standart);
  • сохраняем проект отчета;
  • кидаем на форму необходимые компоненты (TRvProject, TRvSystem и т. д.), связываем с сохраненным файлом, делаем необходимые настройки;
  • пишем следующий код:
Код:
...
uses ..., RvClass, RvProj, RvCsStd;
...
var RaveComponent : TRaveComponent;
...
begin
  with Form1 do
  begin
    //Активируем отчет "Report1"
    RvProject1.SelectReport('Report1',true);
    //Получаем доступ к компоненту "Text1", который находится на 1-й странице
    RaveComponent := 
             RvProject1.ProjMan.FindRaveComponent('Text1',
                          RvProject1.ProjMan.ActiveReport.FirstPage);
    //Меняем свойство текст компонента "Text1"
    (RaveComponent as TRaveText).Text := 'New text';
    //запускаем отчет
    RvProject1.Execute;
  end;  //with Form1
end;
Свойства объектов отчета можно посмотреть в инспекторе объектов в Rave Designer.

Думаю достаточно понятно все изложил ))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter