|
#1
|
|||
|
|||
Rave reports
Ребят помогите с Rave Reports.
Необходимо вывести списком фамилии водителей машины. Проблема в том что мастером я не могу построить отчет, так как соединение с базой настраиваю и включаю только в момент запуска приложения. Обусловленно это тем что база находится в интернете, первоначально я создаю туннель к базе ssh а затем подключаюсь к ней как к локальной. Мастером по этому поводу я воспользоватся не могу. Пробовал кидал компонент RvDataSetConnection и CustomConnection. Все делал как указанно в инструкциях но вместо значения полей выводится только (invalid), но выводится столько раз сколько имеется записей в базе. В отчете создаю поле DataText. в DataField пишу fio, так же как указывается в запросе, но не выводится. Может кто может объяснить в чем дело, или дать простой пример програмного заполнения табличной части отчета. Через RvCustomConnection так же выводит инвалиды... Буду очень признателен если объяснения дадут без ссылок на первые попавшиеся темы, просмотрел уже более 30 тем точно, делал все как указанно, но все равно выводится одно и тоже.. |
#2
|
|||
|
|||
Забыл указать. Delphi 2010.
Компоненты запроса ZeoDb ZQuery. Когда делал через RvCustomConnection писал так: Код:
procedure TLIForm.RvLIDriversOpen(Connection: TRvCustomConnection); begin MainForm.DBSelect('SELECT fio,telephone,operator FROM drivers WHERE car_id='+inttostr(cars[car.ItemIndex].id),ZLIDrivers); end; procedure TLIForm.RvLIDriversEOF(Connection: TRvCustomConnection; var Eof: Boolean); begin Eof:=ZLIDrivers.Eof; end; procedure TLIForm.RvLIDriversFirst(Connection: TRvCustomConnection); begin ZLIDrivers.First; end; procedure TLIForm.RvLIDriversGetCols(Connection: TRvCustomConnection); begin With Connection do begin WriteField('fio',dtString,50,'fio','Фамилия имя отчество'); WriteField('telephone',dtString,30,'telephone','Телефон'); WriteField('operator',dtString,20,'phone_operator','Оператор'); end; { with } end; procedure TLIForm.RvLIDriversGetRow(Connection: TRvCustomConnection); begin With Connection do begin WriteStrData('',ZLIDrivers.FieldByName('fio').AsString); WriteStrData('',ZLIDrivers.FieldByName('telephone').AsString); WriteStrData('',ZLIDrivers.FieldByName('operator').AsString); end; { with } end; procedure TLIForm.RvLIDriversNext(Connection: TRvCustomConnection); begin ZLIDrivers.Next; end; procedure TLIForm.RvLIDriversRestore(Connection: TRvCustomConnection); begin ZLIDrivers.Active:=false; end; |
#3
|
|||
|
|||
Вопрос решен
Все разобрался. Нужно было программно обновить компонент доступа к данным в Rave. Делается это так:
Код:
procedure TMainForm.BitBtn3Click(Sender: TObject); var DataView: TRaveBaseDataView; // Unit - RvData begin RvProject1.Open; LIForm.ZInstalls.SQL.Text:='SELECT * FROM installs'; LIForm.ZInstalls.active:=true; With RvProject1.ProjMan do begin Dataview := FindRaveComponent('DvInstalls',nil) as TRaveBaseDataView; CreateFields(DataView, nil, nil, true); // refresh the dataview end; Report.Execute; end; |