五千年(敝帚自珍)

主题:【求助】VB.Net高手们进来瞅一瞅啦, CR问题 -- MacArthur

共:💬24 🌺14
全看树展主题 · 分页首页 上页
/ 2
下页 末页
家园 【求助】VB.Net高手们进来瞅一瞅啦, CR问题

正在学习VB.Net中,这个问题可能在高手眼里比较弱,多多包涵...

最近在用VB.Net 2002 + CrystalReport给别人做一个小小的reporting tool,非常简单,就是从OracleDB里读取数据然后通过CrystalReport生成Excel报表。

边学边做,VB的intellisense挺不错的,上手比较容易,表扬一个。

在我的开发机上,什么问题都没有了,Excel报表也能一次生成,毫无问题。

好了,作了个Setup Project,把所有东东包裹一下,生成一个MSI。

这个MSI里头,包括了"Database_Access.msm", "Database_Access_enu.msm"和"Regwiz.msm",还包括两个.rpt文件,因为用户有可能随后需要调整报表格式。

把MSI往用户机器上一装,却出问题了:Logon Failed

点看全图

外链图片需谨慎,可能会被源头改

这个错误在VB/CR用户中似乎很常见,有不少文章都在谈论如何解决之。

可问题在于,别人都是在开发阶段遇上的这个问题,无论如何都可以debug一步步地看进程;到我这里呢,在自己的机器上没事儿,送到别人机器上就有事儿了,没法debug!

记得西河当初报家门的时候颇有几位.Net高手,请大家帮帮忙,分析分析是咋回事儿...

附上生成报表的源程序,希冀有人能瞅出端倪...

多谢多谢

Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

Private Sub generateCryatalReport(ByVal strReportName As String)

Dim strReportPath As String = Application.StartupPath & "\" & strReportName & ".rpt"

'Dim strReportPath As String = strReportName & ".rpt"

Try

If Not IO.File.Exists(strReportPath) Then

Throw (New Exception("Unable to locate report file:" & vbCrLf & strReportPath))

End If

Dim strSQL As String = "Select * From WLCM_PKG"

Dim DA As New System.Data.OleDb.OleDbDataAdapter(strSQL, dBConPaps)

Dim DS As New DataSet()

DA.Fill(DS)

Dim rptWKIT As New CrystalDecisions.CrystalReports.Engine.ReportDocument()

rptWKIT.Load(strReportPath)

rptWKIT.SetDataSource(DS.Tables(0))

Dim DiskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions()

rptWKIT.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile

rptWKIT.ExportOptions.ExportFormatType = CrystalDecisions.[Shared].ExportFormatType.Excel

DiskOpts.DiskFileName = "c:\" & strReportName & "_Report.xls"

rptWKIT.ExportOptions.DestinationOptions = DiskOpts

rptWKIT.Export()

Catch x As Exception

MessageBox.Show(x.Message + x.Source + x.StackTrace, "Report Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub

家园 查看一下是否有生成xls文件的权限?
家园 这个应该不成问题

用户既然能在本地机上安装那个msi,自然应该是super user之类的权限。xls文件被生成在C:\根目录下,这个地方应该是所有人都有access吧...

我会让她察看一下这方面的,多谢建议!

家园 强啊,写历史的原来还搞编程,赞一个!

不懂 VB,也没用过CrystalReport。不过个人私下怀疑,是不是CrystalReport的库文件没有安装全啊?你可以在用户的机子装一遍CrystalReport,如果还不行把VB也装上。如果装上之后没有问题,那就肯定是缺库文件了,瞎猜的,莫见怪啊

家园 数据库访问权限?

查查客户有没有访问数据库的权限。

家园 有理,有理

花一个先

家园 大大地分特一个,咱可不是啥写历史的

以前从没用过VB.Net,最近被逼良为娼的说...

按我的理解啊(说错了大家纠正)-- 在Setup Project里面包括了RegWiz.msm的目的就在于:安装的时候可以在用户机的.Net Framework里面添加必须的CrystalReport相关的库文件 -- 而非整个CrystalReport本身。毕竟对于用户来说,他并不需要全本CrystalReport的各种各样功能,他仅仅需要生成报表而已...

不过这个怀疑也不能说没有道理 -- 我现在就有点儿怀疑,这个东东在我的机器上跑得好好的而在用户机上不行,是否因为我的.Net Framework里面有某些东东并没有被完全搬到用户机上?

问题是VB.Net + CrystalReport的Setup Project完全是程式化的东东,有兴趣的可以参考这里:

外链出处

大家可以看到,这里完全没有个人发挥的余地,也即少加或者漏加了某个文件等等...

除非是说我的机器上最近被自动安装了某个.Net Framework的patch而用户机上没有被安装?

家园 用的是同一套数据库Access

谢谢

家园 几个思路

我猜有几个可能性

1) 或许是某个CR的DLL漏了

2) dBConPaps 数据库的连接可能有误,指向错误的数据库,错误的登录等等

3) 还可以查看一下用户机器上MDAC的版本,可能太老了。

要是我来DEBUG,我会用最土的办法,加若干个MESSAGE BOX的语句,先判断到底是哪个语句垮了再说。

家园 同情一把。

以前从没用过VB.Net,最近被逼良为娼的说...

不过惭愧的是,我帮不上忙。

家园 蹲坑等候,也准备改用vb.net2005
家园 有道理。查了一下,出错的就是这句

rptWKIT.Export()

问题是再往下就是CrystalDecision的assembly,只能望洋兴叹啦...

您说的几个思路:

1) 或许是某个CR的DLL漏了

这个么,VB.Net + CrystalReport的packaging都是标准化程序,外链出处照方抓药就行了,应该不存在遗漏的可能...

2) dBConPaps 数据库的连接可能有误,指向错误的数据库,错误的登录等等

老实说,这个是最不拿准的地方... 网上很多高手在研究“Logon Failed”时都坦言,这个错误会发生在应用CrystalReport的任何阶段 -- 甚至有时候什么都不用作,只是简单地Verify Database一下,就行了... BusinessObject自己的网站上对这个错误的解释反倒语焉不详,侧证了他们自己也拿不准到底是何原因...

3) 还可以查看一下用户机器上MDAC的版本,可能太老了。

不好意思,这个得麻烦您给详解一下什么是MDAC...

家园 这个有趣

如果您肯定rptWKIT.Export()这句出错,我就继续猜:

可能CR要求某个特定版本的EXCEL,才能顺利EXPORT,可以对比一下两台机器EXCEL的版本。

反正没有很复杂的数据,不妨试一下CSV FORMAT,EXCEL也能读。

这么看,不关数据库或者MDAC什么事了,否则这几句就会出错。

Dim DA As New System.Data.OleDb.OleDbDataAdapter(strSQL, dBConPaps)

Dim DS As New DataSet()

DA.Fill(DS)

MDAC就是Microsoft Data Access Component,跟数据库有关的。.Net好象要求2.7或以上的版本,不知道有无记错。

家园 这个问题碰到过,是CR在打包时没有注册的问题!

我用的VS.Net2003及配套CR软件,解决方法:

在打包文件中,将CR的一个注册包"Regwiz.msm"的"MergeModuleProperties"属性展开,在"License Key"属性中输入CR软件的许可号,然后打包即可!

家园 不晓得是啥问题~~

不过给麦帅推荐个程序日志工具:log4net,

网址 http://logging.apache.org/log4net/

有了这东东,不用debugger也能调试~~

全看树展主题 · 分页首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河