Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как динамически задать в Rave св-во DataField


Автор: dimych83 8.4.2008, 12:47
В приложении есть компонент TADOQuery возвращающий некую выборку из таблицы. Запрос открывается в момент выполнения приложения. В RaveReports есть DataBand связанный с ADOQuery куда должен выводится результат запроса и соответственно несколько полей TRaveDataText. Но на стадии проектирования отчета задать св-во RaveDataText.DataField нельзя, так как ADOQuery открывается только в момент выполнения приложения. 
Как можно динамически установить компонентам RaveDataText это свойство? На текущий момент прописал следующее:
Код

procedure TFPacientList.N5Click(Sender: TObject);
var
  rvUserName: TRaveComponent;
begin
  QueryExistRecept.Close;
  QueryExistRecept.Parameters.ParamByName('id_p').Value := curPacientID;
  QueryExistRecept.Open; 

  with FRecept.rpReport do
  begin
    SelectReport('Pacient',false);
    Open;

    rvUserName := ProjMan.FindRaveComponent('dtData', ProjMan.ActiveReport.LoadedPage[1]);
    if (rvUserName <> nil) then
      TRaveDataText(rvUserName).DataField := 'date';
    rvUserName := ProjMan.FindRaveComponent('dtUser', ProjMan.ActiveReport.LoadedPage[1]);
    if (rvUserName <> nil) then
      TRaveDataText(rvUserName).DataField := 'name';

    Save;
    Close;
    Execute;
  end;

end;


Но в полях выводится значение Invalid. Подскажите пожалуйста как лучше сделать?

Добавлено через 5 минут и 30 секунд
Проблему уже решил smile
Просто инициализировал параметр QueryExistRecept.Parameters.ParamByName('id_p') на стадии разработки нулевым значением и активировал запрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)