我用tclientdataset ,连rave,设 的rvdatasetconnection.dataset 为tclientdataset,因为tclinetdataset无法在设计时激活,字段无法在设计时与rave 的dataview绑定,报表无法在设计时取得数据库的字段,导致库中的记录无法显示,如何解决这一问题???  

解决方案 »

  1.   

    参考以前的问题用程序动态连接时
    function TDataLink.EstablishLink():Boolean;
    begin
       m_RvDataView:=m_RvProject.ProjMan.FindRaveComponent(m_DataViewName,Nil) as TRaveDataView;
       if (m_RvDataView<>Nil) then
       begin
          m_RvDataSetConnection:=TRvDataSetConnection.Create(Nil);
          m_RvDataSetConnection.DataSet:=m_RvDataProvider;
          m_RvDataView.DataCon:=TRaveDataConnection(m_RvDataSetConnection);
          m_RvDataView.ConnectionName:=m_RvDataSetConnection.Name;
          m_RvDataView.Active:=true;
    end;
    end;
    可只要执行 m_RvDataView.DataCon:=TRaveDataConnection(m_RvDataSetConnection);这一句就出错
      

  2.   

    应该可以的,我倒没有用过RV,但使用的是ADO+SQLSERVER+DataProvider+ClientDateSet,在设计时只要Server端运行,就能取到字段,你再试一下;还有就是在设计时,RDM最好一个表对应一个dataprovider,这样在实际更新时就不会出错了。
      

  3.   

    简化问题,实际上
    我用tclientdataset或 tadoquery ,连rave,设 的rvdatasetconnection.dataset 为tclientdataset(adoquery),因为tclinetdataset(adoquery)无法在设计时激活,字段无法在设计时与rave 的dataview绑定,报表无法在设计时取得数据库的字段,导致库中的记录无法显示,如何解决这一问题???  我在程序中已经可以指定 dataview 的数据源了,并连接使用类似的代码
     m_RvDataView:=m_RvProject.ProjMan.FindRaveComponent(m_DataViewName,Nil) as RaveDataView;
     m_RvDataSetConnection:=TRvDataSetConnection.Create(Nil);
     m_RvDataSetConnection.DataSet:=adoquery1;
     m_RvDataView.DataCon:=TRaveDataConnection(m_RvDataSetConnection);
     m_RvDataView.ConnectionName:=m_RvDataSetConnection.Name;可只要执行 m_RvDataView.DataCon:=TRaveDataConnection(m_RvDataSetConnection);这一句时速度非常慢,虽然m_RvDataView.dataset可以在程序中指定了,但报表还是不显示,请高手指教!!!
      

  4.   

    用过rave 的兄弟门请看看!!!
      

  5.   

    我又修改了一下代码发现可能连接上去了就是datatext无法显示表中的内容,表里有多少纪录报表就显示多少个invalid纪录,高手们请看看,如何动态设置datatext的数据源和字段呢,分不够可另加!!!