2014-06-19 160 views
0

让我开始说我从来没有太多的粉丝,跳过C#Java
但是,我正在解决我继承的应用程序VB问题。水晶报表打印到错误的打印机

以下行执行打印操作:

Me.rptShippingLabel1.PrintOptions.PrinterName = "LabelPrinter" 
Me.rptShippingLabel1.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape 
Me.rptShippingLabel1.PrintToPrinter(Me.txtLabelQty.Text, False, 1, 1) 

有一个ZebraZDesignTLP2844经由直接USB连接到工作站和命名LabelPrinter。但是,尽管在代码中指定了目标打印机,但必须在Windows中将Zebra设置为默认打印机,否则该作业将作为默认设置转到任何其他打印机设置。
更令人沮丧的是,在某些计算机上,使用完全相同的配置作业转到正确的打印机,但我无法识别可控模式。 任何建议为什么会这样?

有问题的报告在设计>页面设置中与打印机分离。

+0

打印机名称必须与它在该计算机上的名称完全相同。不同计算机上的同一台打印机可以有不同的名称。 – Steve

+0

@Steve - 它在每个工作站和代码中都被正确地解释出来。 – ArtK

+0

您是否确认使用“打印机”集合?这包含安装在本地计算机上的所有打印机,您可以获取需要提供给Crystal的“打印机名称”的“名称”。 – Steve

回答

1

查看您的报告。在页面设置中查看报表是否针对显示进行了优化。如果是,取消选中它。如果报告仅针对显示进行优化,则PrinterOptions枚举将被丢弃。您仍然可以在旧框架中分配给打印机名称属性,但现在不再有了。

1

试试下面的代码

Dim rptShippingLabel1 As New CrystalReport1 
    Dim PrinterSettings1 As New Printing.PrinterSettings 
    Dim PageSettings1 As New Printing.PageSettings 

    'Replace it with your printer name 
    PrinterSettings1.PrinterName = "Microsoft XPS Document Writer" 
    rptShippingLabel1.PrintToPrinter(PrinterSettings1, PageSettings1, False) 

得到打印机的名称,不要从rptShippingLabel1.PrintOptions.PrinterName读它,它会显示空白。尝试从PrinterSettings1.PrinterName中读取。

这是使用Crystal Reports运行时测试的13.0.9

相关问题