2011-12-15 116 views
0

這裏的基本細節如下:蟒蛇win32com派送失敗 'CrystalRuntime.Application'(64號)

  • Windows Server 2008的64位
  • Python26 64位
  • 的Visual Studio 2008(團隊),這安裝水晶報表(32位和64位運行時)

我的問題是下面的代碼失敗時訊(「CrystalRuntime.Application」)被調用,這在上面的相同的32位操作系統配置上工作得很好。

錯誤時正在:

(-2147221164, 'Class not registered', None, None) 

我已經花了幾個小時會通過各種原因,這是失敗,我得無處..

我甚至在運行makepy.py 'Crystal Reports ActiveX Designer運行時庫'其中包含我正在嘗試創建的com界面,但即使這樣也無法提供結果。

我知道晶體正確安裝,因爲它工作得很好,我可以看到com類正確註冊。

我完全被卡住,需要幫助,我總是希望堆棧可以再來爲我解圍......

有什麼想法,請記住我不是任何規模的Python程序員...

import os 
import sys 
import re 
import time 
from win32com.client import Dispatch 
import pythoncom 

def main(): 

    try: 
     app = Dispatch('CrystalRuntime.Application') 
     print app 
    except pythoncom.com_error, e: 
     print "(crystal reports not installed?): '%s'" % e 
     return 0 

    print 'Success!!!' 


if __name__ == '__main__': 
    main() 
+0

好,我知道一點點進一步分析這一點。 如果我在vb腳本文件中做的或多或少相同,並用'cscript.exe'調用腳本文件,最初我會得到相同的結果。但是,如果我使用'C:\ Windows \ SysWOW64 \ cscript.exe'來調用vb腳本文件,我相信這個腳本是作爲一個32位進程運行的,它就可以工作。 所以......我需要做些什麼才能使python腳本的行爲相同,因爲我不想在vb中重新編寫整個腳本,只是爲了幾行不起作用。 – DIGGIDY 2012-01-06 17:14:53

回答

0

當我在Excel中使用py26時,發現這個語法更好。

Excel_App = win32com.client.gencache.EnsureDispatch('Excel.Application') 

或許可以改變,以適應水晶報表..

App= win32com.client.gencache.EnsureDispatch('CrystalRuntime.Application') 
+0

完全沒有區別,仍然有同樣的錯誤。 – DIGGIDY 2012-01-05 10:59:51