2010-10-01 68 views
2

我想關於這一點我已在Microsoft Dynamics AX 2009中銷售訂單詳細信息窗體上按鈕的點擊事件增加了一個按鈕,點擊打印銷售確認報告,我已經寫了下面的代碼:打印報告2009年通過X ++

void clicked() 
{ 
    Args    args; 
    ReportRun   reportRun; 
    SalesFormLetter  salesFormLetter; 
    PrintJobSettings printJobSettings; 
    CustConfirmJour  custConfirmJour; 
    RecordSortedList list    = new RecordSortedList(55); 
    SalesTable   salesTableUpdate; 
    ; 

    SELECT firstonly custConfirmJour order by ConfirmID desc where custConfirmJour.SalesId == salesTable.SalesId ; 

    list.ins(custConfirmJour); 

    args = new Args(ReportStr(SalesConfirm)); 


    printJobSettings = new PrintJobSettings(); 
    printJobSettings.SetTarget(PrintMedium::Printer); 
    printJobSettings.suppressScalingMessage(true); 

    salesFormLetter = new SalesFormLetter_Confirm(true); 
    salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings()); 

    args.designName("Standard"); 
    args.caller(salesFormletter); 
    args.parmEnum(PrintCopyOriginal::Original); 
    args.parmEnumType(enumnum(PrintCopyOriginal)); 
    args.object(list); 

    reportRun = new ReportRun(args); 
    reportRun.setTarget(PrintMedium::Printer); 
    reportRun.init(); 
    reportRun.run(); 
} 

代碼運行良好,除了上,而不是直接對打印機發送報告,打印預覽即將到來的問題。

我會很greateful如果你們誰可以讓我知道什麼是錯的這個代碼。

RGDS

哈龍

回答

1

既然你不是在引用到任何打印機發送,那就要使用默認打印機,這很可能是微軟XPS或一些顯示功能的打印機。

我曾在printersetting報告(SalesInvoice)發送,並添加一些代碼來嗅出任何發送printersetting。否則,報告將使用適用於該類型報告的任何打印機設置。如果這能夠工作,使我在各個printersettings通過,如電子郵件,PDF,等等,等等... :-)

1

試試這個:

public void run() 
{ 
    Args    args; 
    ReportRun   report; 
    str    printer; 
    PrintJobSettings pjs; 
; 
    args = new Args(reportstr("PwC_ExciseInvoice_Sales")); 
    counter = 1; 
    pjs = new printJobSettings(); 


    while(counter <= maxReports) 
    { 
     args.parm(int2str(counter)); 
     args.record(custInvoiceJour); 
     report = new ReportRun(args); 
     pjs.setTarget(PrintMedium::Printer); 
     report.setTarget(PrintMedium::Printer); 
     report.init(); 
     report.run(); 

     counter++; 
    } 

} 

通過這個代碼,我打電話報告三次(變量maxReports),每次它直接進入打印機。

1

如果不知道用戶已設置爲默認打印機的設備,然後它將始終打印到默認打印機。如果您的默認設置是打印到屏幕上(即使您選擇了Print Medium :: Printer),它仍會進入屏幕。我認爲你應該選擇PrintMedium :: Screen並讓它總是進入屏幕,以便用戶可以選擇打印機,否則他們可能不知道報告的打印位置(我有一些用戶的默認打印機有奇怪的選擇,這可能是整個建築物)。