这一篇我再说说水晶报表的情况。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来顺便说下水晶报表。当然,要想了解更高级或者更细节的东西,需要你自己去研究了。常上CSDN的人肯定知道这里有
一个报表大师:阿泰。可以去他的博客看看啥叫专业。这里我就不啰嗦水晶报表了,呵呵,丢不起这个人