使用水晶报表,希望能够根据用户选择的不同显示出不同的结果,采用的是拉模式。数据库直接连接视图,然后在页面中传递公式过去,进行过滤。做了个例子,如下:
1。使用ms sql Northwind数据库
2。建立自己的视图 Orders_Qry
create view "Orders_Qry" AS
SELECT top 50 Orders.OrderID, Orders.CustomerID, Orders.EmployeeID, Orders.OrderDate, Orders.RequiredDate,
Orders.ShippedDate, Orders.ShipVia, Orders.Freight, Orders.ShipName, Orders.ShipAddress, Orders.ShipCity,
Orders.ShipRegion, Orders.ShipPostalCode, Orders.ShipCountry,
Customers.CompanyName, Customers.Address, Customers.City, Customers.Region, Customers.PostalCode, Customers.Country
FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GO
1。使用ms sql Northwind数据库
2。建立自己的视图 Orders_Qry
create view "Orders_Qry" AS
SELECT top 50 Orders.OrderID, Orders.CustomerID, Orders.EmployeeID, Orders.OrderDate, Orders.RequiredDate,
Orders.ShippedDate, Orders.ShipVia, Orders.Freight, Orders.ShipName, Orders.ShipAddress, Orders.ShipCity,
Orders.ShipRegion, Orders.ShipPostalCode, Orders.ShipCountry,
Customers.CompanyName, Customers.Address, Customers.City, Customers.Region, Customers.PostalCode, Customers.Country
FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GO
解决方案 »
- 设置时间内能够操作,怎么设置?
- urlrewrite 的一个匹配问题..
- 如何把textbox的内容提交给Gridview单元格
- asp.Net如何如何为一个DataTable 表增加多行...
- 身份验证问题(急)
- 非"顶"级帅哥不得进 此疑难杂症需要顶
- 在web页通过ftp控件,进行文件传输时遇到socket问题
- 如何实现这样的的颜色转换,其函数是什么?请教各位了,表示感谢!!!
- 急急急!!! Asp.netMVC如何用JS弹窗???
- Infragistics NetAdvantage 2006 v3 clr2.0 怎样注册啊?
- 页面部署两个file控件,上传图像的可以,上传rar文件没有反映~后台代码基本一致?原因是什么?
- 如何在asp.net里动态生成word页面并且直接显示在ie中?
,报表中使用OLE DB直接连接到数据库中,将视图Orders_Qry作为选定的表添加到报表 中,随便添加几个字段到报表中。
4。在web页面的page_load事件中加入如下代码:
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Drawing.Printing
Imports System.Environment
........
........
Dim rptdoc As New ReportDocument
Dim FormulaStr As String
Dim dd As New TableLogOnInfo rptdoc.Load(Server.MapPath("..\test_1\report\CrystalReport1.rpt"))
With dd.ConnectionInfo
.ServerName = "127.0.0.1"
.DatabaseName = "Northwind"
.UserID = "sa"
.Password = ""
End With
Dim i As Integer
For i = 0 To rptdoc.Database.Tables.Count - 1
rptdoc.Database.Tables(i).ApplyLogOnInfo(dd)
rptdoc.Database.Tables(i).Location = rptdoc.Database.Tables(i).Location
Next If CheckBox1.Checked = True Then
rptdoc.DataDefinition.RecordSelectionFormula = " {Orders_Qry.orderid}='10643'"
End If Dim crEO1 As ExportOptions
Dim DiskOption1 As New DiskFileDestinationOptions
Dim Name As String Name = GetEnvironmentVariable("TEMP") & "\" & Session.SessionID.ToString & ".pdf"
DiskOption1.DiskFileName = Name
crEO1 = rptdoc.ExportOptions With crEO1
.DestinationOptions = DiskOption1
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
rptdoc.Export() Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "inline; filename=Report1.pdf")
Response.WriteFile(Name)
Response.Flush()
Response.Close()
在CheckBox1.Checked选中的时候,
rptdoc.DataDefinition.RecordSelectionFormula = " {Orders_Qry.orderid}='10643'"
加载,但是数据还是显示不对,依然是原来那么多,为什么呢?
我直接在crystal report9中打开报表,使用公式,假如条件“{Orders_Qry.orderid}='10643'“,然后预揽数据,却能够起到作用。昏。。为什么呢?
是环境配置的问题还是代码的问题?在这种模式下有没有办法解决?
多谢各位了!!
这只是我做的一个例子,程序中有个小bug,
rptdoc.DataDefinition.RecordSelectionFormula = " {Orders_Qry.orderid}='10643'"
应该改为
rptdoc.DataDefinition.RecordSelectionFormula = " {Orders_Qry.orderid}=10643"
因为orderid是int类型。。
这样就可以运行了。
但是我实际中也是这样的问题??应该不可能的啊,晚上看了半天的。。明天去公司看看。。各位有什么好的建议,欢迎回复。。
高兴ing……
up