Windows 7环境下的PowerBuilder 10.5,使用MS Office 2010进行ole控制的网络打印机问题

时间:2011-06-23 16:16:18

标签: powerbuilder

我做了以下所有的迁移,

  1. 从PowerBuilder 9到PowerBuilder 10.5
  2. Windows XP到Windows 7
  3. MS Office 97和MS Office 2003到MS Office 2010
  4. 在PowerBuilder应用程序中,我们正在做以下事情

    1. MailMerging文档
    2. 打印文档
    3. 通过附件发送电子邮件
    4. 像这样的功能是自动化的,我们正在使用该应用程序。这里是我们用来处理MS Office功能的OLE控件。

      问题是

      工作前3周,我的意思是以下代码。

      ole_1.object.application.ActivePrinter = i_s_letterenvelops_printer
      
      之后,他们将服务器转移到一个位置到另一个位置。

      我也不知道我的开发机器..

      在这种情况下,我该如何处理?

      请帮我解决这个问题。

      谢谢!

2 个答案:

答案 0 :(得分:0)

打印机名称可能已更改?例如,我的网络打印机名称类似于PRINTER-NAME on SERVER-NAME。还要注意它们是区分大小写的。在我们的应用程序中,我们在尝试使用它之前检查打印机名称是否存在。如果它不存在,我们会显示一条消息,告诉用户联系帮助台关于该打印机。您可以使用PrintGetPrinters获取可用的打印机名称。

已添加20110629: 对于该应用程序,网络打印机名称类似于\\SERVER-NAME\PRINTER-NAME。 一种快速检查方法是将此行放在您的应用程序中:

messagebox("PrintGetPrinters", printgetprinters(), Information!, OK!)

答案 1 :(得分:0)

我的情况是网络组最近将打印机配置文件更改为基于网络,导致应用程序无法创建PDF文件。 我电脑上的打印机列表与以前完全一样:

Send To OneNote 2010    winspool    nul:
Microsoft XPS Document Writer   winspool    Ne00:
CutePDF Writer  winspool    CPW2:
Adobe PDF   winspool    Ne01:
\\otwww001\T01-001-HPLaserJet-4050  winspool    Ne02:

这些打印机名称存储在一个数组中。问题是char(13)被神奇地添加到Adobe PDF行的末尾。为了解决这个问题,我在添加打印机之前删除了char(13)。

if right(ls_CurrentPrinter,1) = char(13) then 
  ls_CurrentPrinter =left(ls_CurrentPrinter,len(ls_CurrentPrinter) - 1)
end if
IF LEN(ls_CurrentPrinter) > 0 THEN
 THIS.ufp_AddNewPrinter(ls_CurrentPrinter)
END IF

它解决了我的问题。

环境: - Windows 7 - PowerBuilder 12.6