水晶报表入门问题?在线等
我在程序中手写了一个DataSet,怎么和水晶报表连接起来?我看了看网上的教程,上面说要用向导创建一个DataSet,然后在和水晶报表连接,可是我的DataSet包括有很多表,我该怎么办?谢谢 问题点数:20、回复次数:4Top
1 楼youhaodeyi(友好的翼)回复于 2006-03-09 16:23:22 得分 0
我在作水晶报表的时候,为什么总提示登陆失败,我用服务器控件做的DataSet登陆没问题,为什么水晶报表就有问题?Top
2 楼Pek_zfs()回复于 2006-03-10 11:58:31 得分 15
希望对你有帮助,我在asp.net上用的。
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
Public Class WFrmNotReigningInfo
Inherits System.Web.UI.Page
Dim oRptd As ReportDocument = New ReportDocument
Private Flag As String
#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents CrystalReportViewer1 As CrystalDecisions.Web.CrystalReportViewer
'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
'根据登陆信息取得当前操作类型
Flag = Session("ModuleType").ToString
Dim ds As New DsNotReigningInfo
Dim ds2 As New DsNotReigningInfo
Dim strCon As String
'自行填充数据集ds()
strCon = System.Configuration.ConfigurationSettings.AppSettings.Get("CMPSDBConnection")
Dim CN As New Data.OracleClient.OracleConnection(strCon)
'打开数据连接
CN.Open()
Dim da As New Data.OracleClient.OracleDataAdapter("SELECT a.LEAVE_ID,b.C_NAME as P_CODE,a.BEGIN_DATE,a.END_DATE,a.OP_DATE," & _
" c.C_NAME as OPERATOR,d.CLASS_NAME as CAUSATION,e.C_NAME as IMPOWER_P" & _
" FROM CM_T6016 a,(SELECT * FROM CM_T1002) b,(SELECT * FROM CM_T1002) c," & _
" (SELECT * FROM CM_T8001) d,(SELECT * FROM CM_T1002) e" & _
" WHERE (a.P_CODE=b.P_CODE) AND (a.OPERATOR=c.P_CODE) AND (a.CAUSATION=d.CLASS_CODE)" & _
" AND (a.IMPOWER_P=e.P_CODE) AND exists(SELECT * FROM CM_T1002 WHERE P_CODE=a.IMPOWER_P)" & _
" AND MODULE_FLAG='" & Flag & "'", CN)
da.Fill(ds, "CM_T6016")
Dim da2 As New Data.OracleClient.OracleDataAdapter("SELECT a.LEAVE_ID,b.C_NAME as P_CODE,a.BEGIN_DATE,a.END_DATE,a.OP_DATE," & _
" c.C_NAME as OPERATOR,d.CLASS_NAME as CAUSATION,a.IMPOWER_P" & _
" FROM CM_T6016 a,(SELECT * FROM CM_T1002) b,(SELECT * FROM CM_T1002) c,(SELECT * FROM CM_T8001) d" & _
" WHERE (a.P_CODE=b.P_CODE) AND (a.OPERATOR=c.P_CODE) AND (a.CAUSATION=d.CLASS_CODE)" & _
" AND not exists(SELECT * FROM CM_T1002 WHERE P_CODE=a.IMPOWER_P)" & _
" AND MODULE_FLAG='" & Flag & "'", CN)
da2.Fill(ds2, "CM_T6016")
ds.Merge(ds2)
oRptd.Load("D:\CMPS-CrystalReport\CMPSCrystalReport\Report\RptNotReigningInfo.rpt")
oRptd.Refresh()
oRptd.SetDataSource(ds)
CrystalReportViewer1.ReportSource = oRptd
End Sub
End Class
Top
3 楼youhaodeyi(友好的翼)回复于 2006-03-11 09:18:40 得分 0
能解释一下这些代码是干什么用的吗?谢谢Top
4 楼xwdd129(高手就是:不出手)回复于 2006-03-13 09:12:27 得分 5
不是在向导里创建DataSet,而是选择对应的DataSet,然后把里面的字段拖到报表上进行设计,显示的时候用代码把多个表数据填充到DataSet即可Top




