windows server 2008中的水晶报表问题

shotdog 2010-02-28 11:07:47
程序放在windows server 2003中正常
系统升级到2008之后
一直出现
“您请求的报表需要更多信息”
输入帐号密码还是无法获取数据。

我有在后台代码里面写了登陆:
try
{
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "127.0.0.1";
connectionInfo.DatabaseName ="xxx";
connectionInfo.UserID = "xxx";
connectionInfo.Password = "~2008zzz";
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
catch
{
lblNote.Text = "<script>alert('数据库登录信息不正确!');</script>";
}
...全文
508 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shotdog 2010-03-06
  • 打赏
  • 举报
回复
谢谢各位。

问题解决了。我估计可能是因为开放机器是32位的,而服务器是64位不兼容的问题。
我到服务器上装了个vs2008,打开报表文件,重新验证一下数据库就可以了。。。。

搞了整整一个星期。。。郁闷死了。
shotdog 2010-03-01
  • 打赏
  • 举报
回复
谢谢楼上的。绑定啊,程序啊都没问题的。

应该是平台的问题。。。
阿泰 2010-03-01
  • 打赏
  • 举报
回复
水晶报表对64位系统支持不完善,会有不少问题。
特别是Windows2008这样的平台,晚于水晶报表出现,更不靠谱。
这个要关注下水晶报表有无最新补丁文件。
shotdog 2010-02-28
  • 打赏
  • 举报
回复
//绑定报表数据
private void BindCrystalReports()
{
string path1 = Server.MapPath("~\\yjs\\");
string path2 = path1 + "FSCJ.rpt";
ReportDocument repDoc = new ReportDocument();
repDoc.Load(path2);

SetDBLogonForReport(repDoc); //设置数据登录信息

CrystalReportViewer1.ReportSource = repDoc;
string selectionFormula = "{View_YJS_FS.XY} ='" + ddlXYs.SelectedValue + "' And {View_YJS_FS.ZY} ='" + ddlZYs.SelectedValue + "' And {View_YJS_FS.IsSelect} = true ";//设置报表数据筛选公式
repDoc.DataDefinition.RecordSelectionFormula = selectionFormula;
repDoc.SetParameterValue("head","2009年"+ddlXYs.SelectedItem.Text+ddlZYs.SelectedItem.Text+"总单");
CrystalReportViewer1.DataBind();
}
//设置登录信息
private void SetDBLogonForReport(ReportDocument reportDocument)
{
try
{


ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "localhost";
connectionInfo.DatabaseName ="base";
connectionInfo.UserID = "sa";
connectionInfo.Password = "pwd";
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
catch
{
lblNote.Text = "<script>alert('数据库登录信息不正确!');</script>";
}
}
段传涛 2010-02-28
  • 打赏
  • 举报
回复
是在加载的同时读取。
shotdog 2010-02-28
  • 打赏
  • 举报
回复
我有写登录。不行的。
段传涛 2010-02-28
  • 打赏
  • 举报
回复
ProfessRptSource.ReportDocument.SetDatabaseLogon("sa","pwd");
sa 是 数据库id pwd 数据密码。
段传涛 2010-02-28
  • 打赏
  • 举报
回复
和你环境没有关系
增加
ProfessRptSource.ReportDocument.Load(Server.MapPath("Professor.rpt"));
ProfessRptSource.DataBind();
ProfessRptSource.ReportDocument.SetDatabaseLogon("sa","pwd");
ProfessRpt.ReportSource = ProfessRptSource;
ProfessRpt.DataBind();
就可以了
shotdog 2010-02-28
  • 打赏
  • 举报
回复
问题补充
windows server 2008是64位的
IIS 的应用程序池设置成32位的,安装32位水晶报表
我有尝试把应用程序池改成64位,安装64位水晶报表,一样的问题。

windows/temp文件夹已给everyone 写入权限
阿双2009 2010-02-28
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090713/18/6e14bf28-1979-4ade-9c60-aaf09284553d.html

看看这篇文章,或许对你有所帮助。。
shotdog 2010-02-28
  • 打赏
  • 举报
回复
急啊

摸索了一下下午,现在是这样子,如果我简单的丢一个报表是可以显示的。

可是只要涉及到需要登陆数据库的,就会出现 :

您请求的报表需要更多信息.

服务器名:
数据库名:
用户名:
密码:
使用集成安全性

其中数据库名无论如何是空的,没法填。。。填了用户名和密码怎么登录都不无效。。。

急啊。。。

4,816

社区成员

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

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