水晶报表连接sqlserver

radiohead001 2010-01-07 05:28:21
唉,照着例子都不会...
链接在这里
http://www.vckbase.com/document/viewdoc/?id=722
不懂的在这里

//staff.rpt为通过向导建立的报表文件,数据库采用SQL Server 7.0
m_Report =m_Application->OpenReport ("C:\\Documents and Settings\\Administrator\\桌面\\cr\\debug\\staff.rpt");
//设置报表标题
m_Report->put_ReportTitle (_bstr_t("Title"));
//设置数据库连接变量
//数据库服务器(local),数据库名staff,用户名sa,密码sa
m_Report->Database ->Tables ->Item [1]->SetLogOnInfo("(local)","staff","sa","sa");


1. staff.rpt是一个空的文件呢,还是里面已经加了表了?如果加了的话,是怎么把sql server中的表直接加进去的呢?"create new connection"下没有这个选项啊?之前用过水晶报表,但都是先把sql server的数据库添加到ODBC数据源内再用的。
2. SetLogOnInfo,例子中的参数好像都是直接针对sqlserver的。如果我用ODBC的话,服务器名和数据库名分别用啥呢?
比如我的数据源名叫“Xtreme Sample Database 10”。
菜鸟一个,谢谢各位了!分还可以加!
...全文
1043 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
radiohead001 2010-02-04
  • 打赏
  • 举报
回复
刚看见,没有用connectionInfo.ServerName,直接
m_Report->Database ->Tables ->Item [1]->SetLogOnInfo("ZIPPON","Northwind","sa","870925");
直接连得SQLSERVER,就你说的OLEDB(ADO)里选的
radiohead001 2010-01-08
  • 打赏
  • 举报
回复
多谢各位,我先试试啊
阿泰 2010-01-08
  • 打赏
  • 举报
回复
晕。。这个分应该主要给llsen。。我汗。。

另外回答你7楼的问题,参考:http://blog.csdn.net/babyt/archive/2008/08/29/4610130.aspx
阿泰 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 radiohead001 的回复:]
谢谢各位,可以用了。还想问一下,如果只想打印和预览报表,用户需要安装对应的dll,或者注册报表控件么?
[/Quote]
radiohead001,问一下,你用的是SQL Server,那么connectionInfo.ServerName 后面你写的是什么?
能否把你的这段代码贴出来看下?
radiohead001 2010-01-08
  • 打赏
  • 举报
回复
谢谢各位,可以用了。还想问一下,如果只想打印和预览报表,用户需要安装对应的dll,或者注册报表控件么?
dqs1014 2010-01-07
  • 打赏
  • 举报
回复
很不错的启发!继续关注
阿泰 2010-01-07
  • 打赏
  • 举报
回复
谢谢llsen.

继续关注,争取这次把这个课题搞清楚。 :)
llsen 2010-01-07
  • 打赏
  • 举报
回复
 private void ConfigureCrystalReports()
{


// 定义ReportDocument对象,装载Crystalreport1.rpt
myReport = new ReportDocument();
string reportPath = Server.MapPath("mdb.rpt");
myReport.Load(reportPath);


//定义水晶报表的数据库连接信息
ConnectionInfo connectionInfo = new ConnectionInfo();
//connectionInfo.DatabaseName = "user";
//connectionInfo.UserID = "pwd";
//connectionInfo.Password = "****";
connectionInfo.ServerName = @"D:\My Documents\Visual Studio 2005\WebSites\CrystalReportsWebSite2\employee.mdb";

//将数据库信息传递给报表
SetDBLogonForReport(connectionInfo, myReport);

//把模板对象赋给报表前端呈现控件CrystalReportViewer1
CrystalReportViewer1.ReportSource = myReport;
}

private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
Tables tables = reportDocument.Database.Tables;

foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);

}
}


参考这个帖子
http://topic.csdn.net/u/20090915/15/02d61426-660f-459b-8418-200752257bf0.html
llsen 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 babyt 的回复:]
2:
ODBC的方式我没怎么用过。
如果你用ODBC的话,在建ODBC连接的时候,
不也是要选服务器,数据库,用户名的吗,不然你怎么创建ODBC连接呢
[/Quote]
这个我之前做过一个例子,等下找找看
阿泰 2010-01-07
  • 打赏
  • 举报
回复
1:这种方式,rpt里必须有表,不能是白板。
create new connection

选OLE DB(ADO),后面会出来个新的界面,里面可以进一步选择的

2:
ODBC的方式我没怎么用过。
如果你用ODBC的话,在建ODBC连接的时候,
不也是要选服务器,数据库,用户名的吗,不然你怎么创建ODBC连接呢

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧