Active Topics Memberlist Search Help | |
Register Login |
Programming | |
EXP Systems Forum : PDF reDirect : Programming |
Topic: Access Reports to Pdf - Bypassing SaveAs | |
Author | Message |
Spyryl
Newbie Joined: 16 Apr 06 Location: Australia Posts: 6 |
Topic: Access Reports to Pdf - Bypassing SaveAs Posted: 16 Apr 06 at 11:33AM |
I have tried the code that you supplied for the conversion of Access reports into pdf's. And while it seemed to have worked for everyone else, I couldn't quite get it to do what I needed.
Is it true that the batch printer dictates where files are to be saved, and if so am I able to create/delete batch printers at runtime. Also is it possible to print out from Access without the SaveAs Dialog appearing (I am using the pro version). And when placing database onto anothers computer in order for the code to contiue working do they also need to purchase the pro version of redirect or is there a runtime control that can be sent with it??? Thanks for the help... |
|
IP Logged | |
Michel_K17
Moderator Group Forum Administrator Joined: 25 Jan 03 Posts: 1673 |
Posted: 17 Apr 06 at 12:44AM |
Hi,
Just answered your other post. You could create/delete batch printers at run time if you really wanted to. There is, however, a 5 second pause while Windows 2000/XP does it's "magic" now that they have all the security code which was not there in Win 9X / Win NT. However, once you have just one batch printer, you can dictate the location of the PDF programmatically by changing a setting for that batch printer, so installing a new batch printer is really not necessary. See the sample VB class code: try it in Excel or Word first, than move the code into Access (plus the additional code posted on the forum in the other post). It's pretty straightforward, but let me know if you need help. Yes, it is possible to bypass the "Save As" dialog as long as you use the batch printer. In fact, if you look at the code in the VB class (it is not protected), you can see that you can change a whole bunch of settings beyond just the directory/filename. Placing the database on somebody else's computer will technically require that other person to purchase PDF reDirect Pro, install it, and install a batch printer. Cheers! Michel. |
|
IP Logged | |
Spyryl
Newbie Joined: 16 Apr 06 Location: Australia Posts: 6 |
Posted: 17 Apr 06 at 11:04AM |
Almost got it to work. The only thing wrong was that it isn't saving the report as the file I have designated.
I don't seem to be able to programmatically change the settings for the Batch printer. Would you mind having a look at the code and seeing if you can spot where I'm going wrong.. Function TestPrinters() Dim oPDF As New clsPrint_PDF_Pro Dim otmpPrinter As Printer On Error GoTo Err Set otmpPrinter = Application.Printer Application.Printer = Application.Printers("Batch PDF - VBA") If oPDF.SetOutput("Batch PDF - VBA", "C:\Test This", "Access_Report.pdf") = 1 Then _ DoCmd.OpenReport "rptSendout", , , "ClientID=" & 1 MyExit: If Not otmpPrinter Is Nothing Then Application.Printer = otmpPrinter Exit Function Err: 'ShowMyErr Err.Number & vbCrLf & Err.Description, 16 MsgBox Err.Number & vbCrLf & Err.Description, 16 Resume MyExit End Function Thanks again for the help Edited by Spyryl |
|
IP Logged | |
Michel_K17
Moderator Group Forum Administrator Joined: 25 Jan 03 Posts: 1673 |
Posted: 17 Apr 06 at 11:16PM |
Hi,
I took your code and made a couple of minor modifications, and it seems to be working for me. Here is my code (I have, in the comments, Identified all the changes that I made to your code as well as a couple of questions to ask yourself. Originally posted by Here is the Modified Code
Function TestPrinters() Dim oPDF As New clsPrint_PDF_Pro Dim otmpPrinter As Printer ' I added this variable to record any errors from the vbClass Dim rtn As Long On Error GoTo Err Set otmpPrinter = Application.Printer Application.Printer = Application.Printers("Batch PDF - VBA") ' Try setting up the batch printer ' Note: Do you have a batch printer called "Batch PDF - VBA" setup? rtn = oPDF.SetOutput("Batch PDF - VBA", "C:\Temp", "Access_Report.pdf") ' Check for success If rtn = 1 Then DoCmd.OpenReport "rptSendout", , , "ClientID=" & 1 Else MsgBox "Batch Printer path setup failed with Error =" & Str$(rtn) End If MyExit: If Not otmpPrinter Is Nothing Then Application.Printer = otmpPrinter Exit Function Err: 'ShowMyErr Err.Number & vbCrLf & Err.Description, 16 MsgBox Err.Number & vbCrLf & Err.Description, 16 Resume MyExit End Function Here are the error codes you might get if setting up the batch printer fails ' This function returns an error code as follows: ' 0 = UNKNOWN_ERROR ' 1 = SUCCESS ' PRINTER ERRORS ' 100 = PRINTER_NOT_FOUND ' 101 = COULD_NOT_ENUMERATE_PRINTERS ' 102 = COULD_NOT_OPEN_PRINTER ' 103 = COULD_NOT_SET_PRINTER_SETTINGS ' 104 = PRINTER_NOT_BATCH_PDF_PRINTER ' PATH ERRORS ' 105 = PATH_IS_NOT_VALID ' 106 = PATH_IS_EMPTY ' 107 = PATH_IS_GREATER_THAN_255_CHARACTERS ' FILENAME ERRORS ' 108 = FILENAME_IS_EMPTY ' 109 = FILENAME_IS_GREATER_THAN_200_CHARACTERS Edited by Michel_K17 |
|
IP Logged | |
Michel_K17
Moderator Group Forum Administrator Joined: 25 Jan 03 Posts: 1673 |
Posted: 17 Apr 06 at 11:23PM |
Hi
If you get the previous code working.. You asked about any additional settings that you can change in the Batch Printer. Most of the settings are accessible via the Batch Printer Preferences screen in the main program. However, if you want to change them programmatically, open the "clsPrint_PDF_Pro" that you added to your database code, and look for this section of code. That's the code that you can modify to set different settings. Originally posted by How to Change Settings
' Get the settings for this batch printer (if there) With MyBatch ' ini file exists - load it. Open UserAppData & BATCH_PATH & Temp For Input As #1 Input #1, .Printer ' Name of the Batch Printer Input #1, .Path ' Path to Output PDF to Input #1, .FileName ' Filename of the PDF Input #1, .Show_Progress ' Show Progress Bar (?) Input #1, .Overwrite ' 0 = no warning, 1 = warn, 2 = new file + number, 3 = append, 4 = prepend Input #1, .Trailer_Digits ' Format of trailing digits (3 = 3 zeros = "000") Input #1, .Number_Start ' Default sequence start number Input #1, .Settings ' GS Conversion Settings Input #1, .FileType ' 0 = PDF, 1 = Encrypted PDF Input #1, .User_Password ' User Password Input #1, .Locked ' PDF is restricted Input #1, .Lock_Permissions ' PDF Permission Options(see iSED QuickPDF docs) Input #1, .Lock_Password ' AKA Master Password Close #1 ' Update the settings .Path = sPath .FileName = sFilename ' ADD YOUR SETTINGS CODE HERE ' Save the updated settings Open UserAppData & BATCH_PATH & Temp For Output As #1 Write #1, .Printer ' Name of the Batch Printer Write #1, .Path ' Path to Output PDF to Write #1, .FileName ' Filename of the PDF Write #1, .Show_Progress ' Show Progress Bar (?) Write #1, .Overwrite ' 0 = no warning, 1 = warn, 2 = new file + number, 3 = append, 4 = prepend Write #1, .Trailer_Digits ' Format of trailing digits (3 = 3 zeros = "000") Write #1, .Number_Start ' Default sequence start number Write #1, .Settings ' GS Conversion Settings Write #1, .FileType ' 0 = PDF, 1 = Encrypted PDF Write #1, .User_Password ' User Password Write #1, .Locked ' PDF is restricted Write #1, .Lock_Permissions ' PDF Permission Options(see iSED QuickPDF docs) Write #1, .Lock_Password ' AKA Master Password Close #1 I hope that helps! Michel P.S. Here is the screen shot of where you change the batch printer settings manually in the program (accessible via the "Preferences" button in PDF reDirect Pro. Edited by Michel_K17 |
|
IP Logged | |
Spyryl
Newbie Joined: 16 Apr 06 Location: Australia Posts: 6 |
Posted: 18 Apr 06 at 11:01AM |
I don't seem to have the above bit of code in my copy of the class module that I imported.
I have the top code (with the errors), but not the bottom code (with the write #1 and Input #1) |
|
IP Logged | |
Michel_K17
Moderator Group Forum Administrator Joined: 25 Jan 03 Posts: 1673 |
Posted: 19 Apr 06 at 1:42AM |
Hi,
I'm guessing that you are running the older v2.0 VB class. You need to run the VB class for the new v2.1 (which also explains why the report name is not working). The new VB class is available [here]. Cheers! Michel |
|
IP Logged | |
Spyryl
Newbie Joined: 16 Apr 06 Location: Australia Posts: 6 |
Posted: 19 Apr 06 at 1:57AM |
Thats it.
You are a genuis. I hope the code I sent you was also useful to you. Many Thanks C!!! |
|
IP Logged | |
Michel_K17
Moderator Group Forum Administrator Joined: 25 Jan 03 Posts: 1673 |
Posted: 19 Apr 06 at 1:31PM |
Cool!
|
|
IP Logged | |
Forum Jump |
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |