[AccessD] VBA Error Trapping

Stuart McLachlan stuart at lexacorp.com.pg
Wed Apr 26 16:11:09 CDT 2023


Rahter than unnecessary opening, why not test the data with a DLookup() or DCount() first 
and only output the report if you get an appropriate result?

On 26 Apr 2023 at 15:56, Ryan W wrote:

> >it looks to me like you're opening in Preview Mode and then right
> >away sending the same report to the printer. In any event if the
> >first Open fails you don't want to resume next but exit the sub.
> 
> In this case, I do want it to resume, but not export the now
> "unfiltered" PDF.  The report is failing with NoData because the ID in
> our database does not match the ID in the data they provided (assuming
> my user didn't normalize the data before hand, which is the red
> highlighting I mentioned to help accomplish that)
> 
> So in the instance I'm testing, 2 ID's don't match and 1 Date/Time
> doesn't match between their data and what they hand-write for us to
> enter at the beginning of the job.  So, with the resume next and
> skipping over the OutPut to and close commands, I get 97 PDFs, instead
> of 100.  If I don't skip over those with some sort of logic, I get 100
> PDFs, but 3 of them are unfiltered reports with 28 pages each, instead
> of 1 page each. (28 is the table size in rows from the client in this
> instance).
> 
> Like I said, since I usually trap and exit the sub like you
> recommended, trying to resume the processed and figuring out how to
> handle commands that came after the failing command that need to be
> ignored (temporarily)..... the only thing I came up with was to store
> the error (or set a boolean variable) to evaluate and skip over the
> two lines of code I do not want to run on "the loop with the 2501
> error" and then reset on the next loop.
> 
> Hope that's a better explanation.
> 
> 
> 
> On Wed, Apr 26, 2023 at 3:41PM Rocky Smolin
> <rockysmolin2 at gmail.com> wrote:
> 
> > In my error handler I usually ignore 2501 because I've asked if the
> > user wants to do something and they say no and so the 2501 operation
> > canceled pops up.  They click OK, and carry on. But I have this in
> > code where if they cancel an operation. So in the error handler If
> > Err.Num = 2501 then exit sub else msgbox "Run Time Error: " &
> > err.num & " - " & err.desc. and exit sub.
> >
> > Re: the code starting with 'With DoCmd', generally have two buttons
> > on the form - Print and Preview. If the user wants to preview and
> > know about Ctrl-P, then that's all they ever use.
> >
> > It looks to me like you're opening in Preview Mode and then right
> > away sending the same report to the printer. In any event if the
> > first Open fails you don't want to resume next but exit the sub.
> >
> > r
> >
> >
> > On Wed, Apr 26, 2023 at 1:28PM Ryan W <wrwehler at gmail.com> wrote:
> >
> > > Oops. Yeah. Forgot to add that into the pseudocode.
> > >
> > > Is the handling of the error and resume logic sane enough?  I
> > > usually
> > only
> > > handle errors that stop the process for the user to fix and start
> > > over. With this I want it to keep chugging along even if the
> > > report has no data (this is in relation to my query about fuzzy
> > > matching last week)....
> > right
> > > now I have the data loaded from the client show in a datasheet as
> > > red if
> > a
> > > matching ID for the work isn't found during the process. My users
> > > can choose to fix it (ideally) or ignore it (and then end up
> > > dealing with the missing reports with mismatched IDs after the
> > > fact).
> > >
> > >
> > >
> > > On Wed, Apr 26, 2023 at 3:08PM Rocky Smolin
> > > <rockysmolin2 at gmail.com> wrote:
> > >
> > > > I think you need an Exit Sub right before Err_Handler:
> > > >
> > > > R
> > > >
> > > > On Wed, Apr 26, 2023 at 11:30 AM Ryan W <wrwehler at gmail.com>
> > > > wrote:
> > > >
> > > > > I've got this bit of code that opens a report in preview mode
> > > > > and
> > > hidden,
> > > > > if the NoData event cancels it I trap a 2501 error.
> > > > >
> > > > > The lines that come after the DoCmd.OpenReport code will
> > > > > continue to
> > > run
> > > > > and output the wrong data (an unfiltered report)
> > > > >
> > > > > What's the best way to avoid the next two lines that depend on
> > > > > the
> > > report
> > > > > to be open?
> > > > >
> > > > >
> > > > > I have something like this:
> > > > >
> > > > > With DoCmd
> > > > >                         lError = 0
> > > > >                         .OpenReport strReportName,
> > > > >                         acViewPreview, ,
> > > > > strWhere, acHidden
> > > > >                         If lError = 0 Then
> > > > >                            .OutputTo acOutputReport,
> > > > >                            strReportName,
> > > > > acFormatPDF, fullPath
> > > > >                            .Close acReport, strReportName,
> > > > >                            acSaveNo
> > > > >                         End If
> > > > >                     End With
> > > > >
> > > > > Err_Handler:
> > > > >   if err.number = 2501 then
> > > > >       lError = Err.Number
> > > > >       Resume Next
> > > > >    end if
> > > > >
> > > > >
> > > > > Is this considered copacetic?   I tried without trapping the
> > err.number
> > > > to
> > > > > a variable, but it seems resume next resets the errorcode back
> > > > > to 0.
> > > > Would
> > > > > it be better to Resume to a label after the .close command? --
> > > > > AccessD mailing list AccessD at databaseadvisors.com
> > > > > https://databaseadvisors.com/mailman/listinfo/accessd Website:
> > > > > http://www.databaseadvisors.com
> > > > >
> > > > --
> > > > AccessD mailing list
> > > > AccessD at databaseadvisors.com
> > > > https://databaseadvisors.com/mailman/listinfo/accessd
> > > > Website: http://www.databaseadvisors.com
> > > >
> > > --
> > > AccessD mailing list
> > > AccessD at databaseadvisors.com
> > > https://databaseadvisors.com/mailman/listinfo/accessd
> > > Website: http://www.databaseadvisors.com
> > >
> > --
> > AccessD mailing list
> > AccessD at databaseadvisors.com
> > https://databaseadvisors.com/mailman/listinfo/accessd
> > Website: http://www.databaseadvisors.com
> >
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com




More information about the AccessD mailing list