关闭

VB6.0+CrystalReport9.2+Installshield遇到的问题。

标签: vb报表开发工具
1220人阅读 评论(0) 收藏 举报
分类:

最近在做一个项目,遇到了一个怪问题。

项目情况:

开发工具: vb6.0+crystalreprt9.2中文版

程序中使用了CRviewer9控件(打印预览)。

问题:在用InstallShield10.5对程序进行打包后,打包方法采用这个方法。在目标机器安装后,运行程序。在使用了CRviewer9的窗口,显示窗口前回水晶报表会弹出一个提示"A Crystal Reports job failed because a free license could not be obtained in the time allocated."点确定后程序可以使用。

原因:出现这个问题的原因是水晶报表的License不够,一台机器每次只能运行一个CRviewer9,显示多个需购买License。但是我的程序就只显示一个CRviewer9控件啊?经过对程序本身的分析发现,程序中有一个地方对CRviewer9进行了重复的调用。就是这段代码引起的错误。这个重复调用很隐蔽,它的出现,也在此给我敲响了警钟(呵呵,当然这段程序不是我这个“高手”编的)。现在来分析一下错误原因。程序里有一个字程序CrpView()用于显示调用CRviewer9控件。程序里还有一个地方用到了combobox控件。

有一段程序是这样的。

Private Sub Form_Load()

..................................

    Combobox1.ListIndex = initOrder
'    Call CrpView(Combobox1.ListIndex = initOrder)    '根据参数值显示预览画面

.................................

End Sub

Private Sub Combobox1_Click()
......................
  

        Call CrpView(Combobox1.ListIndex = initOrder) '根据参数值显示预览画面
  
...................................
End Sub

问题出在Combobox1.ListIndex = initOrder,这里隐含了一次Combobox1_Click()调用,而Combobox1_Click()里有一次Call CrpView()的调用而在用Combobox1.ListIndex = initOrder作参数就形成了多次调用。

删掉一个from_load中的Call CrpView(),将参数改为变量调用这个问题就解决了。

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17112次
    • 积分:263
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    最新评论