以前做好的报表,当数据库名变了在不修改报表的情况下在程序中怎么处理可以使报表还可用?

解决方案 »

  1.   

    修改ADO连接ADO属于OLE DB 是数据集层的可你的数据是数据源层的 所以不会有任何影响,只修改连接字符串就可以
      

  2.   

    只要connection状态是open,与数据库名无关
      

  3.   

    '转自阿泰博客,水晶报表+动态数据源,稍加修改'声明中加入
    Private objCRApp As New CRAXDRT.Application    '水晶报表应用程序对象
    Private objCRReport As New CRAXDRT.Report      '报表对象Private Sub Form_Load()
       '引用MDAC2.X
        Dim db As New ADODB.Connection
        Set db = New ADODB.Connection    Dim strCnn As String  '数据库连接字符串
        strCnn = "Provider=SQLOLEDB.1;Password=;Persist Security Info=false;User ID=sa;Initial     Catalog=sql数据库名;Data Source=192.168.1.X"    db.CursorLocation = adUseClient
        db.Open strCnn    Dim rst As New ADODB.Recordset    Dim props As CRAXDRT.ConnectionProperties     '报表数据源参数集
        Dim prop As CRAXDRT.ConnectionProperty        '报表数据源参数    '--------------------------------------------------
        '构建与定义的记录集对应的数据集结构来模拟一次数据库操作
        '以下的操作可以替换成任意的过程,最终目的就是处理成一个记录集
        '作为报表的数据来源
        '--------------------------------------------------
        Set rst = New ADODB.Recordset    rst.Open 临时表, db, adOpenKeyset, adLockOptimistic    '创建报表
        '加载报表模板
        Set objCRReport = objCRApp.OpenReport(App.Path & "\Report.rpt", 1)   '报表文件名    '清除报表中保持的数据
        objCRReport.DiscardSavedData    objCRReport.EnableParameterPrompting = False      '不进行报表参数提示    '赋给报表数据
        objCRReport.Database.SetDataSource rst
        '--------------------------------------------------    '进行报表显示外观设置    objCRReport.LeftMargin = 260                    '左边距
         objCRReport.RightMargin = 10                    '右边距    CRViewer91.EnableExportButton = True            '导出按钮
        '    CRViewer91.EnableSelectExpertButton = True
        '    CRViewer91.DisplayGroupTree = False             '不显示组树
        '    CRViewer91.EnableAnimationCtrl = False
        '    CRViewer91.EnableCloseButton = False
        '    CRViewer91.EnableGroupTree = False
        '    CRViewer91.EnableHelpButton = False
        '    CRViewer91.EnableRefreshButton = False
        CRViewer91.EnableNavigationControls = True    '显示总页数和下一页
        '    CRViewer91.EnablePopupMenu = False
        '    CRViewer91.EnableSearchControl = False
        '    CRViewer91.EnableSearchExpertButton = False    '查找
        '    CRViewer91.EnableSelectExpertButton = False
        '    CRViewer91.DisplayTabs = False    CRViewer91.DisplayBackgroundEdge = False
        CRViewer91.EnableAnimationCtrl = False
        CRViewer91.EnableCloseButton = False
        CRViewer91.EnableGroupTree = False
        CRViewer91.EnableHelpButton = False
        CRViewer91.EnableRefreshButton = False
        CRViewer91.EnableSearchExpertButton = False
        CRViewer91.EnableSelectExpertButton = False    '指定报表来源
        CRViewer91.ReportSource = objCRReport
        '显示报表
        CRViewer91.ViewReport
        rst.close
        Set rst = NothingEnd Sub