佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1633|回复: 19

Deployment时遇到了crystal report的问题

[复制链接]
发表于 20-1-2005 01:08 PM | 显示全部楼层 |阅读模式
我的project有用到一个crystal report来generate report。可是在deployment时,遇到了一个棘手的问题。请让我说明我的deploy的步骤,如下:

刚开始时的state,如图(还没有做setup project):




我100%依照下面MSDN提供的step来deploy,

http://msdn.microsoft.com/librar ... owsapplications.asp

我有用File System Editor再加进 gplus.ini, GPlusMCharges.MDF, GPlusMChargesLog.LDF 和 rptDN.rpt 。这些都是我的project需要到的files。rptDN.rpt就是我的crystal report file。

之后我的Solution Explorer的情形就如图下:





然后把Crystal Report的lincense key放进Crystal_regwiz2003.msm里,如图下:




然后就built solution。

Built successfully后,在我的hard disc可以看到一个setup folder,它的content如下:

Setup folder
    -> Debug folder
         -> Setup.msi file
         -> Setup.exe file
         -> Setup.ini file
    -> Release folder
         -> 空的
    -> Setup.vdproj file


之后我把setup folder copy 去另一架电脑B,然后install(double click Setup.exe file),成功install(没有出现任何的error)。

电脑B在之前已经install了NET Framework和MSDE。

当我开始program,access database完全没有问题,可是当我要开crystal report viewer时,却出现了下面的error:

err.number = 5
err.description = Load report failed

我查了我的program access crystal report的path,没有问题,可是为什么我不能开report viewer呢?是不是我的deployment的step出现问题?希望有人知道答案的话,请告诉我。先谢谢了。

谢谢大家耐心地看完我的问题帖。

[ Last edited by DRAGONISM on 24-1-2005 at 07:25 PM ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 20-1-2005 02:26 PM | 显示全部楼层
补充:1)我用的是Microsoft Visual Studio .NET 2003,MSDE,和 Crystal Reports 9
      2)这个error number 5是出现在LoadSaveReportException里的

Thanks

[ Last edited by DRAGONISM on 20-1-2005 at 03:30 PM ]
回复

使用道具 举报

发表于 21-1-2005 08:11 AM | 显示全部楼层
想问下。。。 你的project在自己的电脑run时会有问题吗?
因为通常酱的error message 是你pass dataset 进report时出了问题。。 可能是你拿的data 和在datatset 的field 不符合。所以要肯定的是在你本身跑时没问题。
回复

使用道具 举报

 楼主| 发表于 22-1-2005 11:34 AM | 显示全部楼层
在我的电脑跑是完全没有问题的。


我想补充一点的是:我deploy去那架电脑B是windows 98的,今天试了deploy去另一架windows xp,却没有问题。可是偏偏我的上司要我deploy去windows 98

大家有遇过这个问题吗?
回复

使用道具 举报

发表于 22-1-2005 12:19 PM | 显示全部楼层
是没有DEPLOY到最新的MSDE吗?.. 你是用ACCESS DATABASE 的吗?试下INSTALL MS ACCESS 或把ACCESS FORMAT 改成败ACCESS97..不要用 ACCESS2003

[ Last edited by AquaMax on 22-1-2005 at 12:21 PM ]
回复

使用道具 举报

 楼主| 发表于 22-1-2005 01:17 PM | 显示全部楼层
在我自己的电脑和deploy的电脑都是install同样version的MSDE(MSDE release A)。
我是用SQL SERVER 2000 database,可是在deploy的电脑只有install Windows 98, MSDE和.Net Framework 1.1。

(我是在format后,安装Windows 98, MSDE和.Net Framework 1.1,然后deploy我的application。从database读资料,update资料完全没有问题,问题是出现在当要开report viewer时。)

[ Last edited by DRAGONISM on 22-1-2005 at 01:19 PM ]
回复

使用道具 举报

Follow Us
发表于 22-1-2005 03:41 PM | 显示全部楼层
刚找到一些可能你可以试看的方法,也许你的clien side query engine  dll 有问题。。。
看这里〉〉〉http://support.businessobjects.c ... ticles/c2011640.asp
回复

使用道具 举报

萧峰 该用户已被删除
发表于 22-1-2005 11:35 PM | 显示全部楼层
DRAGONISM 于 22-1-2005 01:17 PM  说 :
在我自己的电脑和deploy的电脑都是install同样version的MSDE(MSDE release A)。
我是用SQL SERVER 2000 database,可是在deploy的电脑只有install Windows 98, MSDE和.Net Framework 1.1。

(我是在format后, ...


我遇倒的问题和你不一样,我出现的是ERROR MESSAGE 是INVALID KEYCODE32.DLL,我用的是翻版的,所以没有REG CODE,有没有办法解决?
回复

使用道具 举报


ADVERTISEMENT

发表于 24-1-2005 12:53 AM | 显示全部楼层
萧峰 于 22-1-2005 11:35 PM  说 :


我遇倒的问题和你不一样,我出现的是ERROR MESSAGE 是INVALID KEYCODE32.DLL,我用的是翻版的,所以没有REG CODE,有没有办法解决?

翻版的code都是一样的for crystal report
楼主是使用crystal report 9吗?好像对方的电脑必须也装上才可以呀
或者在deployment的时候有包含merge file(s)吗?
回复

使用道具 举报

 楼主| 发表于 24-1-2005 03:34 PM | 显示全部楼层
miao1978 于 22-1-2005 03:41 PM  说 :
刚找到一些可能你可以试看的方法,也许你的clien side query engine  dll 有问题。。。
看这里〉〉〉http://support.businessobjects.c ... ticles/c2011640.asp



之前的error解决了,谢谢你的link。可是一波未平,一波又起

现在出现的error是 'Query Engine Error: C:\Program Files\GPlus\Setup8\rptDN.rpt'

我发现这个error并不是我的error handling catch到的,因为这个error msgbox的caption是 'Crystal Report Windows Form Viewer', 我的error handling并没有这个名字,显然是crystal report自己generate的error。

我参考并依照以下的link来解决,可是却徒劳无功。

http://support.businessobjects.c ... ticles/c2013253.asp

http://support.businessobjects.c ... ticles/c2013420.asp

大家帮帮忙吧。谢谢。
回复

使用道具 举报

 楼主| 发表于 24-1-2005 06:41 PM | 显示全部楼层
这个error竟然要我花了3天来解决,(虽然之间有做其它要事和开会),我参考了一些link才发觉之间的奥秘。

参考了miao1978的link后,我今天把crqe.dll copy 进 system或system32文件夹里,用regsvr32 crqe.dll来register,并成功register,还以为做对了,其实错就在此。

正确的方法是要register C:\Program Files\Common Files\Crystal Decisions\1.0\Bin 里的crqe.dll,而不是把它抄进system文件夹来register。

虽然解决这个问题,紧接着又来了个database log on问题(请看下帖)。

在这里paste了一些link,都是我在解决这问题的参考资料。

Crystal Report Knowledge Base
http://support.businessobjects.c ... ticles/c2011640.asp
http://support.businessobjects.c ... ticles/c2013253.asp
http://support.businessobjects.c ... ticles/c2013420.asp

Microsoft MSDN
http://msdn.microsoft.com/librar ... alreportsengine.asp
http://msdn.microsoft.com/librar ... netapplications.asp
http://msdn.microsoft.com/librar ... owsapplications.asp

其它
http://starsoft.blogdriver.com/starsoft/365905.html (中文版-有不错的解释)

http://www.vbcity.com/forums/faq ... ports&#TID67989

http://www.shortwavelog.com/support.html

在这里再谢谢Classical_Jack,AquaMax,miao1978和大家帮忙。

[ Last edited by DRAGONISM on 24-1-2005 at 06:47 PM ]
回复

使用道具 举报

 楼主| 发表于 24-1-2005 06:49 PM | 显示全部楼层
萧峰 于 22-1-2005 11:35 PM  说 :


我遇倒的问题和你不一样,我出现的是ERROR MESSAGE 是INVALID KEYCODE32.DLL,我用的是翻版的,所以没有REG CODE,有没有办法解决?


这里会有你要的答案:
http://msdn.microsoft.com/librar ... owsapplications.asp
回复

使用道具 举报

 楼主| 发表于 24-1-2005 07:19 PM | 显示全部楼层
由于我做development的电脑(电脑A) 和 做deployment的电脑(电脑B)的SQL SERVER名字不一样,所以才会有以下的error:

当快要成功display report时,忽然report viewer 会 pop up 一个 'Database Login Box', 如图。之后我需要打进相关的资料,才可顺利看到report。



之前我也post过同样的问题,那时候的情形是-'从我朋友做的crystal report在我电脑run时出现的database login box'。之后我依照网友的建议,把crystal report里的 Database Connection 换掉就可以了,如图:



可是现在deploy后,crystal report (.rpt file) 的database connection 还是link去我电脑的sql server,应该才造成database login box一直pop up的问题。

我也依照网友的建议,参考了以下的link后,加了一些coding
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/crystlmn/html/crtskaccessingsecuredatabases.asp , 问题还是一样,还有什么我漏掉了吗?


  1. Imports CrystalDecisions.CrystalReports.Engine
  2. Imports CrystalDecisions.Shared
  3. Imports CrystalDecisions.Windows.Forms
  4. Imports CrystalDecisions.ReportSource

  5. Public Class frmRptViewer2
  6. Inherits System.Windows.Forms.Form

  7. #Region " Windows Form Designer generated code " ...

  8.    
  9. Dim rptPrintDoc As New ReportDocument


  10. Private Sub CryRptViewer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles CryRptViewer.Load

  11.   'Create a report document instance to hold the report
  12.   Dim sReport As String
  13.   Dim sString As String
  14.   Dim sProcess As String

  15.   Try
  16.      'Change screen cursor
  17.      Me.Cursor = Cursors.WaitCursor
  18.       
  19.      Select Case sProcess
  20.      Case "Debit Note"
  21.         sReport = "CrystalReport1.rpt"
  22.      End Select

  23.      rptPrintDoc.Load(Application.StartupPath & "" & sReport)

  24.      'Set the report source for the crystal reports
  25.      'viewer to the report instance.
  26.      Me.CryRptViewer.ReportSource = rptPrintDoc

  27.      Dim logOnInfo As New TableLogOnInfo
  28.      Dim i As Integer
  29.      'Loop through every table in the report.
  30.      For i = 0 To rptPrintDoc.Database.Tables.Count - 1
  31.         'Set the connection information for current table.
  32.         logOnInfo.ConnectionInfo.ServerName = gSQLServer
  33.         logOnInfo.ConnectionInfo.DatabaseName = gSQLDb
  34.         logOnInfo.ConnectionInfo.UserID = gUser
  35.         logOnInfo.ConnectionInfo.Password = gPwd
  36.         rptPrintDoc.Database.Tables.Item(i).ApplyLogOnInfo(logOnInfo)
  37.      Next i

  38.      'Zoom viewer to fit to the whole page
  39.      Me.CryRptViewer.Zoom(2)
  40.      Me.Cursor = Cursors.Arrow

  41.      Catch Exp As LoadSaveReportException
  42.         MsgBox(CStr(Err.Number) & "-" & Err.Description, MsgBoxStyle.Critical, "!!!")

  43.      Catch Exp As Exception
  44.         MsgBox(Exp.Message, MsgBoxStyle.Critical, "General Error")
  45.     End Try
  46. End Sub

  47. End Class
复制代码



希望高手多多指点在下。谢谢。

[ Last edited by DRAGONISM on 24-1-2005 at 07:21 PM ]
回复

使用道具 举报

 楼主| 发表于 27-1-2005 12:26 PM | 显示全部楼层
终于找到答案了。下面的程序是对的,其实我摆了个乌龙(错在Me.CryRptViewer.ReportSource = rptPrintDoc的位置),大家不要笑我。

  1. Imports CrystalDecisions.CrystalReports.Engine
  2. Imports CrystalDecisions.Shared
  3. Imports CrystalDecisions.Windows.Forms
  4. Imports CrystalDecisions.ReportSource

  5. Public Class frmRptViewer2
  6. Inherits System.Windows.Forms.Form

  7. #Region " Windows Form Designer generated code " ...

  8.    
  9. Dim rptPrintDoc As New ReportDocument


  10. Private Sub CryRptViewer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles CryRptViewer.Load

  11.   'Create a report document instance to hold the report
  12.   Dim sReport As String
  13.   Dim sString As String
  14.   Dim sProcess As String

  15.   Try
  16.      'Change screen cursor
  17.      Me.Cursor = Cursors.WaitCursor
  18.       
  19.      Select Case sProcess
  20.      Case "Debit Note"
  21.         sReport = "CrystalReport1.rpt"
  22.      End Select

  23.      rptPrintDoc.Load(Application.StartupPath & "" & sReport)

  24.      Dim logOnInfo As New TableLogOnInfo
  25.      Dim i As Integer
  26.      'Loop through every table in the report.
  27.      For i = 0 To rptPrintDoc.Database.Tables.Count - 1
  28.         'Set the connection information for current table.
  29.         logOnInfo.ConnectionInfo.ServerName = gSQLServer
  30.         logOnInfo.ConnectionInfo.DatabaseName = gSQLDb
  31.         logOnInfo.ConnectionInfo.UserID = gUser
  32.         logOnInfo.ConnectionInfo.Password = gPwd
  33.         rptPrintDoc.Database.Tables.Item(i).ApplyLogOnInfo(logOnInfo)
  34.      Next i

  35.      'Set the report source for the crystal reports
  36.      'viewer to the report instance.
  37.      Me.CryRptViewer.ReportSource = rptPrintDoc

  38.      'Zoom viewer to fit to the whole page
  39.      Me.CryRptViewer.Zoom(2)
  40.      Me.Cursor = Cursors.Arrow

  41.      Catch Exp As LoadSaveReportException
  42.         MsgBox(CStr(Err.Number) & "-" & Err.Description, MsgBoxStyle.Critical, "!!!")

  43.      Catch Exp As Exception
  44.         MsgBox(Exp.Message, MsgBoxStyle.Critical, "General Error")
  45.     End Try
  46. End Sub

  47. End Class
复制代码

[ Last edited by DRAGONISM on 27-1-2005 at 12:27 PM ]
回复

使用道具 举报

T博士 该用户已被删除
发表于 15-2-2005 10:15 AM | 显示全部楼层

erm...

请问。。。如果我是用JSP。。。 那么。。。应该如何CONFIGURE CRYSTAL REPORT 呢???

谢谢。。。
回复

使用道具 举报

 楼主| 发表于 21-6-2005 01:43 PM | 显示全部楼层
对不起,博士,我不知道JSP要如何configure
回复

使用道具 举报


ADVERTISEMENT

发表于 22-6-2005 08:26 PM | 显示全部楼层
老兄,你害我瞪大眼睛研究,结果竟然是这样?可恶。

想不到.net的deployment浆麻烦,建议作精华。
回复

使用道具 举报

发表于 22-6-2005 08:29 PM | 显示全部楼层
这个handle是自己defind的吗?

Private Sub CryRptViewer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles CryRptViewer.Load

还有,
你有Try。。。。。catch,error message没有show什么问题啊?

[ Last edited by haroldlbc on 22-6-2005 at 08:34 PM ]
回复

使用道具 举报

发表于 22-6-2005 08:32 PM | 显示全部楼层
如果我有楼主的一半冷静就好了,我还是讨厌做programmer。
回复

使用道具 举报

 楼主| 发表于 24-6-2005 10:13 PM | 显示全部楼层
haroldlbc 于 22-6-2005 08:29 PM  说 :
这个handle是自己defind的吗?

Private Sub CryRptViewer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles CryRptViewer.Load

还有,
你有Try。。。。。catch,error message没有show ...



Private Sub CryRptViewer_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles CryRptViewer.Load
是VB.NET自动generate的, 只要双击CR Viewer的object就行。


Try。。。。。catch,error message没有show任何error msg, 因为根本就没有error。
report viewer 会 pop up 一个 'Database Login Box', 是因为dll的问题(在Win98
需要不同version的dll), 而不是coding问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 2-3-2025 08:23 AM , Processed in 0.142364 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表