6 个解决方案
#1
楼主能清楚点吗?简单的说下你要求
#2
不好意思,我重新说一下:
程序运行时,在水晶报表显示之前,出现一个窗体,在该窗体中可以设置水晶报表将要显示的记录,例如把数据库中字段A等于某些值的记录过滤掉,剩下的显示出来。
程序运行时,在水晶报表显示之前,出现一个窗体,在该窗体中可以设置水晶报表将要显示的记录,例如把数据库中字段A等于某些值的记录过滤掉,剩下的显示出来。
#3
你是用PULL模式还是PUSH模式呢
PUSH模式的话,只要把Datatable里数据过去重新传给报表就行了。
PUSH模式的话,只要把Datatable里数据过去重新传给报表就行了。
#4
用push模式去做吧
#5
引用你另一个贴的代码:
Dim MyCn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ Application.StartupPath & "\MyAccess.mdb")
Dim MyCommand As OleDbCommand
Dim MyDataAdapter As OleDbDataAdapter
Dim MyDataSet As New DataSet()
Dim oRpt As New CrystalReport1()
MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
MyDataAdapter =New oleDbDataAdapter(MyCommand)
MyDataAdapter.fill(MyDataSet,"TableName")
oRpt.SetDataSource(MyDataSet.Tables(0))
CrystalReportViewer1.ReportSource = oRpt
-------------
将你以上代码稍改一下:
将代码:MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
改为: MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID and 表1.姓名='ABC'",MyCn)
以上加了 and 表1.姓名='ABC' 就会按条件选择表1中姓名是abc的数据了,当然这是举例,你可以按实际的要求去做。
你后来好像用到了视图,那么你的以上语句应该是改为查询视图。
Dim MyCn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ Application.StartupPath & "\MyAccess.mdb")
Dim MyCommand As OleDbCommand
Dim MyDataAdapter As OleDbDataAdapter
Dim MyDataSet As New DataSet()
Dim oRpt As New CrystalReport1()
MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
MyDataAdapter =New oleDbDataAdapter(MyCommand)
MyDataAdapter.fill(MyDataSet,"TableName")
oRpt.SetDataSource(MyDataSet.Tables(0))
CrystalReportViewer1.ReportSource = oRpt
-------------
将你以上代码稍改一下:
将代码:MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
改为: MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID and 表1.姓名='ABC'",MyCn)
以上加了 and 表1.姓名='ABC' 就会按条件选择表1中姓名是abc的数据了,当然这是举例,你可以按实际的要求去做。
你后来好像用到了视图,那么你的以上语句应该是改为查询视图。
#6
你可以用一个临时表存储从数据库中取得的数据,然后再对这个临时表操作(过滤)即可,最后把
CrystalReportViewer1.ReportSource =Tbltemp
CrystalReportViewer1.ReportSource =Tbltemp
#1
楼主能清楚点吗?简单的说下你要求
#2
不好意思,我重新说一下:
程序运行时,在水晶报表显示之前,出现一个窗体,在该窗体中可以设置水晶报表将要显示的记录,例如把数据库中字段A等于某些值的记录过滤掉,剩下的显示出来。
程序运行时,在水晶报表显示之前,出现一个窗体,在该窗体中可以设置水晶报表将要显示的记录,例如把数据库中字段A等于某些值的记录过滤掉,剩下的显示出来。
#3
你是用PULL模式还是PUSH模式呢
PUSH模式的话,只要把Datatable里数据过去重新传给报表就行了。
PUSH模式的话,只要把Datatable里数据过去重新传给报表就行了。
#4
用push模式去做吧
#5
引用你另一个贴的代码:
Dim MyCn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ Application.StartupPath & "\MyAccess.mdb")
Dim MyCommand As OleDbCommand
Dim MyDataAdapter As OleDbDataAdapter
Dim MyDataSet As New DataSet()
Dim oRpt As New CrystalReport1()
MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
MyDataAdapter =New oleDbDataAdapter(MyCommand)
MyDataAdapter.fill(MyDataSet,"TableName")
oRpt.SetDataSource(MyDataSet.Tables(0))
CrystalReportViewer1.ReportSource = oRpt
-------------
将你以上代码稍改一下:
将代码:MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
改为: MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID and 表1.姓名='ABC'",MyCn)
以上加了 and 表1.姓名='ABC' 就会按条件选择表1中姓名是abc的数据了,当然这是举例,你可以按实际的要求去做。
你后来好像用到了视图,那么你的以上语句应该是改为查询视图。
Dim MyCn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ Application.StartupPath & "\MyAccess.mdb")
Dim MyCommand As OleDbCommand
Dim MyDataAdapter As OleDbDataAdapter
Dim MyDataSet As New DataSet()
Dim oRpt As New CrystalReport1()
MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
MyDataAdapter =New oleDbDataAdapter(MyCommand)
MyDataAdapter.fill(MyDataSet,"TableName")
oRpt.SetDataSource(MyDataSet.Tables(0))
CrystalReportViewer1.ReportSource = oRpt
-------------
将你以上代码稍改一下:
将代码:MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID",MyCn)
改为: MyCommand=New OleDbCommand("Select 表1.a,表1.b,表2.c,表2.d From 表1,表2 Where 表1.ID=表2.ID and 表1.姓名='ABC'",MyCn)
以上加了 and 表1.姓名='ABC' 就会按条件选择表1中姓名是abc的数据了,当然这是举例,你可以按实际的要求去做。
你后来好像用到了视图,那么你的以上语句应该是改为查询视图。
#6
你可以用一个临时表存储从数据库中取得的数据,然后再对这个临时表操作(过滤)即可,最后把
CrystalReportViewer1.ReportSource =Tbltemp
CrystalReportViewer1.ReportSource =Tbltemp