有这么个问题,大家帮小弟看看 关于水晶报表的问题问题如下:数据库为sql server 2005, 主报表内包含一个子报表,程序运行后,出现如下图:我用的是SQL 身份验证,其他报表也是,为什么偏偏打印这个报表出现数据库登录界面??搞不懂”每次打印都加以验证“我也取消了呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary> /// 为报表保存数据库帐号信息 /// (解决每次运行出现登录数据库窗体问题) /// </summary> /// <param name="report">报表对象</param> public static void SavePass(ReportDocument report) { TableLogOnInfo logOnInfo = new TableLogOnInfo(); for (int i = 0; i <= report.Database.Tables.Count - 1; i++) { logOnInfo.ConnectionInfo.UserID = SubStr(strConn, "user id=", ";"); logOnInfo.ConnectionInfo.Password = SubStr(strConn, "password=", ""); report.Database.Tables[i].ApplyLogOnInfo(logOnInfo); } }//----------------------------------//调用xxxxReport rpt= new xxxxReport();rpt.SetDataSource(ds);SavePass(rpt); /// <summary> /// 为报表保存数据库帐号信息 /// (解决每次运行出现登录数据库窗体问题) /// </summary> /// <param name="report">报表对象</param> public static void SavePass(ReportDocument report) { TableLogOnInfo logOnInfo = new TableLogOnInfo(); for (int i = 0; i <= report.Database.Tables.Count - 1; i++) { logOnInfo.ConnectionInfo.UserID = SubStr(strConn, "user id=", ";"); logOnInfo.ConnectionInfo.Password = SubStr(strConn, "password=", ""); report.Database.Tables[i].ApplyLogOnInfo(logOnInfo); } }//----------------------------------//调用xxxxReport rpt= new xxxxReport();rpt.SetDataSource(ds);SavePass(rpt); 应该是你的主报表和子报表使用一个dataset ,而不是2个。如果是多个ds的话会出现这样的问题。你可以看看。 strConn 为数据库连接字符串如 Provider=SQLOLEDB;Data Source=.\\SQLEXPRESS;initial catalog=doc;user id=sa;password=sa上面的SubStr()是这个方法/// <summary> /// 截取指定的字符串 /// </summary> /// <param name="str">要截取的字符串</param> /// <param name="start">起始字符</param> /// <param name="last">结束字符</param> /// <returns></returns> public static string SubStr(string str, string start, string last) { if (last == "") { str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length); } else { str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length); str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); } return str; } C#启动扫描仪 DataTable问题 svc配置文件 关于生成大型文本文件 请教效率问题! 为什么总是有空白啊(WinForm)?各位帮帮忙啊!!! 怎么样遍历系统的菜单 问一个很菜的问题! TreeView鼠标右键问题? 英文版、繁体版操作系统的数据库时间格式错误! 怎样做一个表格? 在winform中如何调用ie8 提供的另存为文本的方法 初学Nhibernate,狂报Unknown entity class: BlueF_EduSys.Domain.CUSTOMER
/// <summary>
/// 为报表保存数据库帐号信息
/// (解决每次运行出现登录数据库窗体问题)
/// </summary>
/// <param name="report">报表对象</param>
public static void SavePass(ReportDocument report)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo();
for (int i = 0; i <= report.Database.Tables.Count - 1; i++)
{
logOnInfo.ConnectionInfo.UserID = SubStr(strConn, "user id=", ";");
logOnInfo.ConnectionInfo.Password = SubStr(strConn, "password=", "");
report.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
}
}
//----------------------------------
//调用
xxxxReport rpt= new xxxxReport();
rpt.SetDataSource(ds);
SavePass(rpt);
/// 为报表保存数据库帐号信息
/// (解决每次运行出现登录数据库窗体问题)
/// </summary>
/// <param name="report">报表对象</param>
public static void SavePass(ReportDocument report)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo();
for (int i = 0; i <= report.Database.Tables.Count - 1; i++)
{
logOnInfo.ConnectionInfo.UserID = SubStr(strConn, "user id=", ";");
logOnInfo.ConnectionInfo.Password = SubStr(strConn, "password=", "");
report.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
}
}
//----------------------------------
//调用
xxxxReport rpt= new xxxxReport();
rpt.SetDataSource(ds);
SavePass(rpt);
如 Provider=SQLOLEDB;Data Source=.\\SQLEXPRESS;initial catalog=doc;user id=sa;password=sa
上面的SubStr()
是这个方法/// <summary>
/// 截取指定的字符串
/// </summary>
/// <param name="str">要截取的字符串</param>
/// <param name="start">起始字符</param>
/// <param name="last">结束字符</param>
/// <returns></returns>
public static string SubStr(string str, string start, string last)
{ if (last == "")
{
str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length);
}
else
{
str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length);
str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()));
}
return str;
}