IF llSetPrinter THEN *create a report to store recent printer information lnOldSelect = SELECT() lcRptFile = ADDBS(GETENV("TEMP"))+"RptRun.FRX" lcRptFile2 = SYS(2023)+'\'+SYS(2015)+".FRX" CREATE CURSOR TempCur (Temp C (10)) CREATE REPORT (lcRptFile) FROM TempCur */create a report to store recent printer information USE IN TempCur USE (lcRptFile) EXCLUSIVE ALIAS RptFile COPY TO (lcRptFile2) SELECT 0 USE (lcRptFile2) EXCLUSIVE ALIAS RptFile2 LOCATE REPLACE; EXPR WITH '',; TAG WITH '',; TAG2 WITH '' lcOldPrinter = SET("printer",3) SYS(1037,2) SELECT RptFile LOCATE REPLACE; EXPR WITH lcExpr,; TAG WITH lcTag,; TAG2 WITH lcTag2 IF VAL(OS(3))*100+VAL(OS(4))>=600 THEN TRY SET PRINTER TO NAME (lcPrinter) CATCH TO loException ENDTRY ENDIF &&Val(Os(3))*100+Val(Os(4))>=600 SYS(1037,3) CATCH TO loException WHEN loException.ERRORNO=125 * Drucker nicht bereit, vermutlich in SET("Printer") llSetErr = True USE IN RptFile2 ERASE (FORCEEXT(lcRptFile2,"*")) lcErrMsg = d_GetText("dcDruck_PrintClicked_MB1") CATCH TO loException WHEN loException.ERRORNO=1957 * Problem mit Drucker Spooler llSetErr = True USE IN RptFile2 ERASE (FORCEEXT(lcRptFile2,"*")) lcErrMsg = d_GetText("dcDruck_PrintClicked_MB1") CATCH TO loException * andere Fehler, Standardhandler rufen RAISEEVENT(THIS,'ERROR',loException.ERRORNO,loException.PROCEDURE,loException.LINENO) llError = doApp.glQuitting FINALLY * ENDTRY USE IN RptFile * ERASE (FORCEEXT(lcRptFile,"*")) SELECT(lnOldSelect) ENDIF &&llSetPrinter report form ..... IF llSetPrinter THEN *nur wenn Bericht, kein Export TRY SET PRINTER TO NAME (lcOldPrinter) CATCH TO loException ENDTRY SELECT RptFile2 SYS(1037,3) USE IN RptFile2 SELECT(lnOldSelect) ERASE (FORCEEXT(lcRptFile2,"*")) ENDIF &&llSetPrinterand the code to get the printer settings:
lcRptFile = d_GetTempFileName(,'FRX') &&SYS(2023)+'\'+SYS(2015)+".FRX" CREATE CURSOR TempCur (Temp C (10)) CREATE REPORT (lcRptFile) FROM TempCur USE IN TempCur USE (lcRptFile) EXCLUSIVE ALIAS RptFile IF !EMPTY(SYS(1037,1)) THEN lcExpr = RptFile.EXPR lcTag = RptFile.TAG lcTag2 = RptFile.TAG2 lcPrinter = lcPrinter ENDIF &&!EMPTY(SYS(1037,1)) IF VAL(OS(3))*100+VAL(OS(4))>=600 THEN SET PRINTER TO NAME (lcOldPrinter) ENDIF &&Val(Os(3))*100+Val(Os(4))>=600 USE IN RptFile ERASE (FORCEEXT(lcRptFile,"*")So I use a report to get the printer information the customer needs, store it somewhere and restore this on printing.