>* Click event for button [Start report] in form QM_RTYPE.SCX. >PRIVATE cString >IF NOT lQueryMakerRunThru > IF THISFORM.check1.VALUE = 1 > llok = checkforemail(cQuery_id) > IF !llok > THISFORM.check1.VALUE = 0 > THISFORM.REFRESH() > ENDIF > ELSE > goData = .NULL. > ENDIF >ENDIF >lErrorFound = .F. && If true, then an incorrect file name was entered by user. >nErrorLevel = 0 && Error level set by QM_ERROR() to signal back type of error. >nName_width = LEN(cReport_name) + 4 && Width of report name field. plus lenght of ext if not there bw 1/12/06 >nDirection = THISFORM.opg_direction.VALUE && User selected output direction. > >** Security if implemented. Disable buttons to edit report. >IF(glrptsecurity AND NOT lQueryMakerRunThru) THEN >ELSE > THISFORM.btn_reset.ENABLED = .T. >ENDIF > >CLEAR TYPEAHEAD >DO CASE > CASE cOutput_type = "LABELS" .AND. .NOT. FILE(cLabelName + ".LBX") && If printing mailing labels. > cString = "Before you can generate mailing labels, you must must "+; > "insert fields into the label. To insert fields, first "+; > "pull down the Report menu and select the Variables option." > = MESSAGEBOX(cString, 0 + 48, "Missing Label Fields") > THISFORM.btn_edit.SETFOCUS > RETURN > > CASE (nDirection = 2 .OR. nDirection = 4) .AND. EMPTY(cReport_name) && If report name field empty, then assign default value. > cString = "Since you have directed output to a report file, "+; > "you must also type in a file name. If you wish "+; > "to use the suggested name of QMF_REPT.TXT, then "+; > "just press the [Start report] button again." > IF (NOT(lQueryMakerRunThruWeb) AND (NOT(lQueryMakerRunThru))) > = MESSAGEBOX(cString, 0 + 48, "Must Supply A File Name") > ENDIF > cReport_name = PADR("QMF_REPT.TXT", nName_width) > THISFORM.REFRESH > RETURN > > CASE nDirection = 2 .OR. nDirection = 4 && If disk file output selected. >** check the file name for illegal characters and directory exists. > IF(RAT("\", cReport_name, 1) <= 0 AND NOT(EMPTY(cReport_name))) THEN > cReport_name = gPrintTables + cReport_name > nName_width = LEN(cReport_name) + 4 && Width of report name field. > ENDIF > lcOut_path = LEFT(cReport_name, RAT("\", cReport_name, 1)) > IF(DIRECTORY(ALLTRIM(lcOut_path)) != .T.) THEN > IF (NOT(lQueryMakerRunThruWeb) AND (NOT(lQueryMakerRunThru))) > WAIT WINDOW 'File Path is Invalid. Please Select Output Path and Name Again.' > cReport_name = PUTFILE("Output Name: ") > ELSE > cReport_name = gPrintTables + "QMF_REPT.TXT" > ENDIF > nName_width = LEN(cReport_name) + 4 && Width of report name field. > THISFORM.REFRESH > ENDIF > IF .NOT. "." $ cReport_name && If missing an extension, then add one. > cReport_name = PADR(ALLTRIM(cReport_name) + ".TXT", nName_width) > nName_width = LEN(cReport_name) + 4 && Width of report name field. > THISFORM.REFRESH > ENDIF > > IF(nDirection = 2) THEN > IF UPPER(RIGHT(RTRIM(cReport_name), 4)) <> ".TXT" > cReport_name = IIF(LEFT(cReport_name, 1) <> ".", LEFT(cReport_name, AT(".", cReport_name) - 1) + ".TXT", "QMF_REPT.TXT") > cReport_name = PADR(cReport_name, nName_width) > cString = "Since you must include a .TXT file extension, your "+; > "file extension is being automatically changed to " + cReport_name > IF (NOT(lQueryMakerRunThruWeb) AND (NOT(lQueryMakerRunThru))) > = MESSAGEBOX(cString, 0 + 48, "Missing File Extension") > ENDIF > ENDIF > ELSE > IF UPPER(RIGHT(RTRIM(cReport_name), 4)) <> ".PDF" > cReport_name = IIF(LEFT(cReport_name, 1) <> ".", LEFT(cReport_name, AT(".", cReport_name) - 1) + ".PDF", "QMF_REPT.PDF") > cReport_name = PADR(cReport_name, nName_width) > cString = "Since you must include a .PDF file extension, your "+; > "file extension is being automatically changed to " + cReport_name > IF (NOT(lQueryMakerRunThruWeb) AND (NOT(lQueryMakerRunThru))) > = MESSAGEBOX(cString, 0 + 48, "Missing File Extension") > ENDIF > ENDIF > ENDIF > > IF (NOT(lQueryMakerRunThruWeb) AND (NOT(lQueryMakerRunThru))) > IF(FILE(cReport_name)) THEN > IF(MESSAGEBOX(L_CNTSTU.FILEEXST, 4+32, ALLTRIM(L_QM_SQL.MSG56) + " " + ALLTRIM(cReport_name) + ")") != 6) THEN > RETURN (.F.) > ENDIF > ENDIF > ENDIF > >ENDCASE >* If proceeding with the report, then save the user's changes. >SELECT QM_LIST >IF RLOCK() && If query record secured. > IF QM_LIST.F_QUERY_ID = cQuery_id && If another user hasn't deleted record. > REPLACE F_P_OUTPUT WITH nDirection, ; > F_P_NAME WITH cReport_name, ; > F_P_EJECT WITH lFirstEject > ENDIF > UNLOCK > GO RECNO() >ENDIF > >IF QM_LIST.F_QUERY_ID <> cQuery_id > = MESSAGEBOX("Cannot proceed because the query was not found!", 0 + 48, "Cannot Proceed") > RETURN (.F.) >ENDIF > >nErrorLevel = 0 && Can be changed on QM_ERROR() error handler. > >IF nDirection = 1 AND NOT lQueryMakerRunThru && If outputting to the printer. >* Verify that printer is on line. > cMsg_text = "Please make sure that your printer is "+; > "turned on, loaded with paper, securely "+; > "connected and is on-line." > DO WHILE .NOT. PRINTSTATUS() > IF MESSAGEBOX(cMsg_text, 5+32, "Printer Cannot Be Accessed!") <> 4 > RETURN (.F.) > ENDIF > ENDDO >ENDIF > >ON ERROR DO QM_ERROR WITH "PRINT" && Install Query Maker's error handler. >SELECT (cTable_name) <--------- this is the alias that it should be on for the report. > >DO CASE > CASE (cOutput_type = "REPORT" .OR. cOutput_type = "FORM_REPT" .OR. cOutput_type = "DS_REPT") .AND. nDirection = 1 && Send report to printer. > WAIT "Printing the report . . . " WINDOW NOWAIT > > PRINTJOB > IF NOT lQueryMakerRunThru > IF lFirstEject && If eject page at report's beginning. > REPORT FORM (cReptFormFullName) NOCONSOLE TO PRINTER PROMPT > ELSE > REPORT FORM (cReptFormFullName) NOCONSOLE TO PRINTER PROMPT NOEJECT > ENDIF > ELSE > IF(PRINTSTATUS()) THEN > IF lFirstEject && If eject page at report's beginning. > REPORT FORM (cReptFormFullName) NOCONSOLE TO PRINTER > ELSE > REPORT FORM (cReptFormFullName) NOCONSOLE TO PRINTER NOEJECT > ENDIF > ENDIF > ENDIF > ENDPRINTJOB > > SET PRINTER TO && Try to flush network print buffer, if any. > > CASE (cOutput_type = "REPORT" .OR. cOutput_type = "FORM_REPT" .OR. cOutput_type = "DS_REPT") .AND. nDirection = 2 && Send report to file. > WAIT "Writing the report file " + RTRIM(cReport_name) + " . . . " WINDOW NOWAIT > IF lFirstEject && If eject page at report's beginning. > REPORT FORM (cReptFormFullName) NOCONSOLE TO FILE (cReport_name) ASCII > ELSE > REPORT FORM (cReptFormFullName) NOCONSOLE NOEJECT TO FILE (cReport_name) ASCII > ENDIF > SET MESSAGE TO "" > WAIT CLEAR > > IF NOT(lQueryMakerRunThruWeb) > IF MESSAGEBOX("Do you want to view this file now?", 4+32, "View " + ALLTRIM(cReport_name)) = 6 > llok = opentextfile(cReport_name) > ENDIF > ENDIF > IF VARTYPE(goData) = "O" > llok = smtpmailwrapper(goData.ToName, goData.SubjectTo, goData.MsgBody, ; > IIF(!EMPTY(goData.AttachmentM),goData.AttachmentM, cReport_name), goData.FromName) > goData = .NULL. > RELEASE extended goData > ENDIF > > CASE (cOutput_type = "REPORT" .OR. cOutput_type = "FORM_REPT" .OR. cOutput_type = "DS_REPT") .AND. nDirection = 3 && Send report to the screen. > REPORT FORM (cReptFormFullName) TO PRINTER PROMPT PREVIEW <-----------This is the line that the alias is switching on for some reason. > > CASE (cOutput_type = "REPORT" .OR. cOutput_type = "FORM_REPT" .OR. cOutput_type = "DS_REPT") .AND. nDirection = 4 && Send report to a PDF file. > WAIT "Writing the report file " + RTRIM(cReport_name) + " . . . " WINDOW NOWAIT > lnNumPrinters = APRINTERS(gaPrinters) > IF lnNumPrinters > 0 THEN && If there are installed printer drivers > lnPos = ASCAN(gaPrinters, 'Acrobat PDFWriter') > IF lnPos != 0 THEN >** Write out to a postscript file and then translate to pdf if adobe installed > IF UPPER(RIGHT(RTRIM(cReport_name), 4)) <> ".TXT" > lcReportName = cReport_name + ".PS" > ELSE > lndotpos = AT('.', cReport_name, 1) > lcReportName = SUBSTR(cReport_name, 1, lndotpos) + "PS" > ENDIF > SET PRINTER TO NAME "Acrobat PDFWriter" > STORE PRINTSTATUS( ) TO llReady > IF NOT llReady > SET PRINTER TO DEFAULT > REPORT FORM (cReptFormFullName) NOCONSOLE TO FILE (cReport_name) ASCII > ELSE > REPORT FORM (cReptFormFullName) NOCONSOLE TO FILE (lcReportName) > SET PRINTER TO DEFAULT > lcReportName2 = STRTRAN(lcReportName, ".PS", ".PDF") > IF FILE(lcReportName2) THEN > Fhandle = FOPEN(lcReportName2) > DO WHILE Fhandle = -1 > Fhandle = FOPEN(lcReportName2) > ENDDO > FCLOSE(Fhandle) > ENDIF > IF(FILE(lcReportName)) THEN > DELETE FILE (lcReportName) > ENDIF > ENDIF > ELSE > lnPos = 0 > FOR lncnt = 1 TO lnNumPrinters > IF(RIGHT(gaPrinters(lncnt, 1),2) == 'PS') THEN > lnPos = lncnt > ENDIF > ENDFOR > IF lnPos != 0 THEN >** Use a postscript and Ghostscript instead of Adobe > IF UPPER(RIGHT(RTRIM(cReport_name), 4)) <> ".PDF" > lcReportName = cReport_name + ".PS" > ELSE > lndotpos = AT('.', cReport_name, 1) > lcReportName = SUBSTR(cReport_name, 1, lndotpos) + "PS" > ENDIF > IF FILE(lcReportName) THEN > DELETE FILE (lcReportName) > ENDIF > SET PRINTER TO NAME gaPrinters(lnPos,1) > STORE PRINTSTATUS( ) TO llReady > IF NOT llReady > SET PRINTER TO DEFAULT > REPORT FORM (cReptFormFullName) NOCONSOLE TO FILE (cReport_name) ASCII > ELSE > REPORT FORM (cReptFormFullName) NOCONSOLE TO FILE (lcReportName) > > SET PRINTER TO DEFAULT > lcExeName = ALLTRIM(gMainPath) + 'bin\gswin32c.exe' + ; > ' -I' + ALLTRIM(gMainPath) + 'lib;' + ALLTRIM(gMainPath) + 'fonts' + ; > ' -dCompatibilityLevel=1.2' + ; > ' -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite' + ; > ' -sOutputFile=' + '"' + ALLTRIM(STRTRAN(lcReportName, '.PS', '.PDF')) + '"' + ; > ' -c .setpdfwrite -f ' + '"' + ALLTRIM(lcReportName) + '"' + CHR(0) >*!* RUN /N &lcExeName > WAIT "Writing the report PDF " + RTRIM(cReport_name) + " . . . " WINDOW NOWAIT NOCLEAR > DO ps2pdf WITH lcExeName > SET MESSAGE TO "" > WAIT CLEAR > WAIT "Finished the report PDF " + RTRIM(cReport_name) + " . . . " WINDOW NOWAIT > > IF(FILE(lcReportName)) THEN > DELETE FILE (lcReportName) > ENDIF > ENDIF > ENDIF > ENDIF > ENDIF > SET MESSAGE TO "" > WAIT CLEAR > IF VARTYPE(goData) = "O" > llok = smtpmailwrapper(goData.ToName, goData.SubjectTo, goData.MsgBody, ; > IIF(!EMPTY(goData.AttachmentM),goData.AttachmentM, cReport_name), goData.FromName) > goData = .NULL. > RELEASE extended goData > ENDIF > > CASE cOutput_type = "LABELS" .AND. nDirection = 1 && Send labels to printer. > WAIT "Printing the labels . . . " WINDOW NOWAIT > PRINTJOB > LABEL FORM (cLabelName) NOCONSOLE SAMPLE TO PRINTER PROMPT > ENDPRINTJOB > SET PRINTER TO && Try to flush network print buffer, if any. > > CASE cOutput_type = "LABELS" .AND. nDirection = 2 && Send labels to file. > WAIT "Writing the label file " + RTRIM(cReport_name) + " . . . " WINDOW NOWAIT > LABEL FORM (cLabelName) NOCONSOLE TO FILE (cReport_name) > > CASE cOutput_type = "LABELS" .AND. nDirection = 3 && Send labels directly to the screen. > LABEL FORM (cLabelName) PREVIEW SAMPLE >ENDCASE > >IF nDirection = 1 .AND. nErrorLevel = 0 && If output sent to printer. > WAIT "Finished" WINDOW NOWAIT >ENDIF > >IF EMPTY(cErrorHandler) && Remove Query Maker's error handler. > ON ERROR >ELSE && Restore prior error handler. > ON ERROR &cErrorHandler >ENDIF > >IF nDirection = 2 .AND. nErrorLevel = 0 && If output sent to a disk file. > IF .NOT. FILE(cReport_name) && If the file exists. > = MESSAGEBOX("Unable to create the file " + RTRIM(cReport_name), 0 + 48, "No File Created") > ENDIF >ENDIF > > >