这一篇我再说说水晶报表的情况。ACCESS中对应水晶报表方面,大家可能会遇到的最多的问题应该就是打开报表后

会出现需要登录的问题。

 

这个是为什么呢?明明我没有设置密码,怎么会有要输入密码呢?如果你够沉着,如果你的debug经验不缺乏的话,

你会发现在水晶报表跳出输入密码的登录框中,access的路径不是我现在数据库放置的位置,仍然是我在编码的时候

选择的数据库地址。他为什么没有变呢?其实这个时候你需要问,这个地址为什么要变?

 

当你使用公用服务器的时候,可能不会出现这个问题,因为你不管到哪个客户端使用,服务器地址不会变。然而你用access,

当数据库跟着换了电脑后,服务器地址当然也变了,而你编码中的地址却没有变,这个就是问题出现的原因咯!明白了吧?

其实是很简单的一个道理。

 

那怎么办呢?老规矩,看代码。

 

 



‘数据库连接
        DBConnection.ConnectionString = DB_CnStr()
        DBConnection.Open()
'开始查询
        Dim sql As New System.Text.StringBuilder
Dim DT As New DataTable

        sql.Append(" SELECT * FROM WORDINFO")

Dim cmd As New OleDb.OleDbCommand(sql.ToString, DBConnection)
Dim RS As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(cmd)
        DT = New DataTable

        RS.Fill(DT)
        DBConnection.Close()
        ’以上就是数据库里查询,下面就是把查询结果给水晶报表来显示。
       ’先定义报表的位置,接着定义一个报表页面,然后是一个自动登录数据库的
Dim reportPath As String = Application.StartupPath & "/" & "CrystalReport.rpt"
Dim rptDoc As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim logonInfo As New CrystalDecisions.Shared.TableLogOnInfo

        rptDoc.Load(reportPath)
        ‘这里就是设置数据库登录的信息,ACCESS中有账号密码的话就填,没有的话就全部空,
          ’如果其他的数据库,如sql就要填服务器和数据库名称了
        logonInfo.ConnectionInfo.ServerName = ""
        logonInfo.ConnectionInfo.DatabaseName = ""
        logonInfo.ConnectionInfo.UserID = ""
        logonInfo.ConnectionInfo.Password = ""
        rptDoc.Database.Tables(0).ApplyLogOnInfo(logonInfo)
       ‘OK,上面已经登录数据库了,下面就来水晶报表加载数据源了
        rptDoc.SetDataSource(DT)
        rptDoc.Refresh()
        ’水晶报表的内容都有了,下面用reportview来显示这个报表就好咯
        CrystalReportViewer1.ReportSource = rptDoc
        CrystalReportViewer1.Refresh()



这个代码的方法就是动态加载水晶报表的数据源的过程了,这个是专业说法哦,呵呵!

 

水晶报表的设计有推和拉的两种方式,也就是push,pull咯!说白了也是动态和静态数据源。水晶报表的使用也很简单,这里我只是

借用ACCESS来顺便说下水晶报表。当然,要想了解更高级或者更细节的东西,需要你自己去研究了。