每一次报表打开之前前设置一下,但是那个登陆提示框还是出现,为什么?(请看源码)

lionqun 2003-09-14 09:20:19
每一次报表打开之前前设置一下,但是那个登陆提示框还是出现,为什么?

#Region "设置报表数据库设置"
Public Sub SetReportInfo(ByRef MyReport As CrystalDecisions.CrystalReports.Engine.ReportDocument)
Dim tbCurrent As CrystalDecisions.CrystalReports.Engine.Table
Dim tliCurrent As CrystalDecisions.Shared.TableLogOnInfo

For Each tbCurrent In MyReport.Database.Tables
tliCurrent = tbCurrent.LogOnInfo
With tliCurrent.ConnectionInfo
.ServerName = pub.ServerName
.UserID = pub.LoginName
.Password = pub.LoginPass
.DatabaseName = pub.databaseName
End With
tbCurrent.ApplyLogOnInfo(tliCurrent)
Next tbCurrent
End Sub
#End Region
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rock29 2003-09-15
  • 打赏
  • 举报
回复
嘿嘿,你的程序肯定是没有错的,问题在于你设计报表的时候必须基于你上面的信息基础之上设计,否则就会出现登陆提示,如果你不想重新画报表的话,你可以右键选择数据库->设置位置->选择你的表,替换为新的数据源(就是你代码写的那个)即可,于是问题来了:如果你的数据库,服务器等名称编了的话,你必须重作上面的过程,有没有方法写成代码呢?我也不会,等着高手指点(都等了半年了!)!!!!!!!!!!!!!!

其实,你的表的字段加起来如果不到100个的话,最好用dataset(它最高支持100个字段),然后把报表的数据源设成它就行了,比你用的方法省事多了!
sumysong 2003-09-15
  • 打赏
  • 举报
回复
我估计也是没有设置好,你用的是什么数据源啊,我原来用dataset数据源的时候就是总出现,后来知道原因了,呵呵!
LongBow007 2003-09-15
  • 打赏
  • 举报
回复
是不是没注册好啊
lxstruggle 2003-09-15
  • 打赏
  • 举报
回复
看看这里你就懂了:
Dim rep As New reptypetotal
Dim conn As New ConnectionInfo()
Dim log As TableLogOnInfo
Dim tbl As Table
Dim area As String
Dim a As New SessionClass()
Dim aptitude As Session_Aptitude_Struct = a.Get_Session_Aptitude
area = aptitude.domination


Dim cn As New SqlClient.SqlConnection()
cn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings.Item("myconn")
If Mid(area, 3, 4) = "0000" Then
area = Mid(area, 1, 2)
ElseIf Mid(area, 5, 2) = "00" Then
area = Mid(area, 1, 4)
End If

With conn
.ServerName = cn.DataSource
.DatabaseName = cn.Database
.UserID = ConfigurationSettings.AppSettings.Item("userid")
.Password = ConfigurationSettings.AppSettings.Item("password")
End With

For Each tbl In rep.Database.Tables
log = tbl.LogOnInfo
log.ConnectionInfo = conn
tbl.ApplyLogOnInfo(log)
Next

Dim crParameterValues As ParameterValues
Dim crParameterDiscreteValue As ParameterDiscreteValue
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition

crParameterFieldDefinitions = rep.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item("@area")
crParameterValues = crParameterFieldDefinition.CurrentValues

crParameterDiscreteValue = New ParameterDiscreteValue()
crParameterDiscreteValue.Value = area
crParameterValues.Add(crParameterDiscreteValue)

crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
Me.CrystalReportViewer1.ReportSource = rep
参数的问题你不用管,关键看
For Each tbl In rep.Database.Tables
log = tbl.LogOnInfo
log.ConnectionInfo = conn
tbl.ApplyLogOnInfo(log)
Next

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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