vc++在使用vs2008 中自带的水晶报表的例程 跪求
展开全部
VS2008中使用该版本的水晶.按如下方式操作:
1.用VC6.0生成一个对话框工程.对话框上右键->插入ActiveX组件->选Crystal ActiveX Report View Control 10.5,Ctrl键双击这个插入的组件,会出来映射变量向导.输入变量名 m_View. 其他都默认,提示你插入两个类时,就确定.这个步骤在.net里会出异常,只能通过老VC来生成.比较恶心.
在stdafx.h里加入#import "C:\\Program Files\\Business Objects\\Common\\2.8\\bin\\craxddrt.dll" no_namespace
老VC的工程就能运行了.OK,接下来把这些东东放到VC.net工程里.
2.创建.net VC/MFC工程. 把上一步自动加入的两个水晶类加到你工程里.在stdafx.h里加上:
#import "C:\\Program Files\\Business Objects\\Common\\2.8\\bin\\craxddrt.dll" no_namespace
#i nclude "CrystalReportViewer10.h"
把上一步中映射变量的
DDX_Control(pDX, IDC_VIEW1, m_View);考到你的相应类里.
在你使用该水晶控件的Dialog的 .h文件里定义:
IApplicationPtr m_Application;
IReportPtr m_Report;
CCrystalReportViewer10 m_View;//这是你映射的控件变量
在该对话框的 OnInitDialog里加入:
ShowWindow(SW_MAXIMIZE);
CString strFileRpt="C:\\Fuck.rpt";
CString strFileXml="C:\\Fuck.xml";
m_Application.CreateInstance (__uuidof(Application));
m_Report =m_Application->OpenReport(_bstr_t(strFileRpt));
IDatabasePtr pDB=m_Report->Database;
pDB->Tables->Item[1]->Location=_bstr_t(strFileXml);
m_View.SetReportSource(m_Report);
m_View.SetDisplayToolbar (TRUE);
m_View.SetDisplayGroupTree (FALSE);
m_View.SetDisplayBorder (FALSE);
m_View.SetDisplayTabs(FALSE);
m_View.Refresh ();
//调用下面两行中的一行:
m_View.ViewReport();//预览.
m_Report->PrintOut();//不预览,直接打印
3.程序的打包与发布:
做安装包时,把水晶10.5的安装目录下所有文件(默认是C:\Program Files\Business Objects\Common\2.8\bin)都考到与你的可执行文件同一目录.然后把所有的dll都注册一下就OK了,也就是所有加进去的水晶的东东,只要是dll,就 regsvr32 他一下.现在的打包工具应该都支持安装时注册组件功能.这我就不细说了.还有就是水晶这个垃圾发布时需要 .net work 2.0至少.
1.用VC6.0生成一个对话框工程.对话框上右键->插入ActiveX组件->选Crystal ActiveX Report View Control 10.5,Ctrl键双击这个插入的组件,会出来映射变量向导.输入变量名 m_View. 其他都默认,提示你插入两个类时,就确定.这个步骤在.net里会出异常,只能通过老VC来生成.比较恶心.
在stdafx.h里加入#import "C:\\Program Files\\Business Objects\\Common\\2.8\\bin\\craxddrt.dll" no_namespace
老VC的工程就能运行了.OK,接下来把这些东东放到VC.net工程里.
2.创建.net VC/MFC工程. 把上一步自动加入的两个水晶类加到你工程里.在stdafx.h里加上:
#import "C:\\Program Files\\Business Objects\\Common\\2.8\\bin\\craxddrt.dll" no_namespace
#i nclude "CrystalReportViewer10.h"
把上一步中映射变量的
DDX_Control(pDX, IDC_VIEW1, m_View);考到你的相应类里.
在你使用该水晶控件的Dialog的 .h文件里定义:
IApplicationPtr m_Application;
IReportPtr m_Report;
CCrystalReportViewer10 m_View;//这是你映射的控件变量
在该对话框的 OnInitDialog里加入:
ShowWindow(SW_MAXIMIZE);
CString strFileRpt="C:\\Fuck.rpt";
CString strFileXml="C:\\Fuck.xml";
m_Application.CreateInstance (__uuidof(Application));
m_Report =m_Application->OpenReport(_bstr_t(strFileRpt));
IDatabasePtr pDB=m_Report->Database;
pDB->Tables->Item[1]->Location=_bstr_t(strFileXml);
m_View.SetReportSource(m_Report);
m_View.SetDisplayToolbar (TRUE);
m_View.SetDisplayGroupTree (FALSE);
m_View.SetDisplayBorder (FALSE);
m_View.SetDisplayTabs(FALSE);
m_View.Refresh ();
//调用下面两行中的一行:
m_View.ViewReport();//预览.
m_Report->PrintOut();//不预览,直接打印
3.程序的打包与发布:
做安装包时,把水晶10.5的安装目录下所有文件(默认是C:\Program Files\Business Objects\Common\2.8\bin)都考到与你的可执行文件同一目录.然后把所有的dll都注册一下就OK了,也就是所有加进去的水晶的东东,只要是dll,就 regsvr32 他一下.现在的打包工具应该都支持安装时注册组件功能.这我就不细说了.还有就是水晶这个垃圾发布时需要 .net work 2.0至少.
追问
你又做成的实例吗?这个方法的实例0----做成的,请发到HANQI0323@163.com.谢谢肯定加分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我HI给你了请及时采纳
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询