Printing multiple copy reports in Access 2003

B

Brian Doiron

I have a custom Access application that handles my companie's Inventory and
Invoicing. We are in the process of converting the Invoice report from a dot
matrix to a laser printer. This invoice also is used as a delivery ticket
which is signed by the customer requiring the laser invoice form to be
carbonless. I found a 5 part carbonless laser form that works great and I
have been able to use code to print the 5 copies and non-coallated using the
PRINTOUT method. I am trying to go with a completely blank invoice form. I
have ran into an issue with trying to print on the bottom of the report what
each five copies are designated for. For example on Page one copy one I want
to print "Original" then on Page one copy two I want to print "File Copy"
and so on till all five copies of page one are complete. Then continue this
process on page two until all pages have been printed....


This is the code I use to print the 5 copies.

DoCmd.OpenReport "InvoiceLaserDiscount", acViewPreview, , "[Invoice No] =
Forms![Invoices]![Invoice No]"
DoCmd.PrintOut , , , , 5, False
DoCmd.Close acReport, "InvoiceLaserDiscount"

If I could retrieve a variable of some kind of which copy it was
printing. That way I could print the hide or show the correct label at the
bottom of the report as each copy prints...
 
A

Al Campagna

Brian,
Let's try this...
Don't use the Printout to create 5 copies, just use the normal print (of
one report).. but...
using a suggestion on a previous post regarding this same problem.

I would suggest creating a small table lie this
SortOrder CopyDesc
------------------------------
1 "Original Copy"
2 "Customer Copy"
3 "File Copy"
4 "Accounting Copy"

Add this table to your query behind the report... with no join.
This is a cartesian realtionship. This will cause 4 identical tickets
(thus 4 pages) to be delivered to the
report... each ticket with it's own SortOrder and CopyDesc for your footer.
Group and Sort your report on SortOrder, and cause a page break after
each ticket.
An unbound text control in the page footer, with a ControlSource of...
= [Desc]
should display different values, each on it's own ticket page.
Haven't tested this exact setup, but I've used the Cartesian relationship
before, for creating X copies of the same address label.
This is the way I'd go at it.
--
hth
Al Campagna
Microsoft Access MVP
http://home.comcast.net/~cccsolutions/index.html
"Find a job that you love... and you'll never work a day in your life."
 
B

bdoiron

Brian,
Let's try this...
Don't use the Printout to create 5 copies, just use the normal print (of
one report).. but...
using a suggestion on a previous post regarding this same problem.

I would suggest creating a small table lie this
SortOrder CopyDesc
------------------------------
1 "Original Copy"
2 "Customer Copy"
3 "File Copy"
4 "Accounting Copy"

Add this table to your query behind the report... with no join.
This is a cartesian realtionship. This will cause 4 identical tickets
(thus 4 pages) to be delivered to the
report... each ticket with it's own SortOrder and CopyDesc for your footer.
Group and Sort your report on SortOrder, and cause a page break after
each ticket.
An unbound text control in the page footer, with a ControlSource of...
= [Desc]
should display different values, each on it's own ticket page.
Haven't tested this exact setup, but I've used the Cartesian relationship
before, for creating X copies of the same address label.
This is the way I'd go at it.
--
hth
Al Campagna
Microsoft Access MVPhttp://home.comcast.net/~cccsolutions/index.html
"Find a job that you love... and you'll never work a day in your life."




I have a custom Access application that handles my companie's Inventory and
Invoicing. We are in the process of converting the Invoice report from a
dot
matrix to a laser printer. This invoice also is used as a delivery ticket
which is signed by the customer requiring the laser invoice form to be
carbonless. I found a 5 part carbonless laser form that works great and I
have been able to use code to print the 5 copies and non-coallated using
the
PRINTOUT method. I am trying to go with a completely blank invoice form. I
have ran into an issue with trying to print on the bottom of the report
what
each five copies are designated for. For example on Page one copy one I
want
to print "Original" then on Page one copy two I want to print "File Copy"
and so on till all five copies of page one are complete. Then continue
this
process on page two until all pages have been printed....
This is the code I use to print the 5 copies.
DoCmd.OpenReport "InvoiceLaserDiscount", acViewPreview, , "[Invoice No] =
Forms![Invoices]![Invoice No]"
DoCmd.PrintOut , , , , 5, False
DoCmd.Close acReport, "InvoiceLaserDiscount"
If I could retrieve a variable of some kind of which copy it was
printing. That way I could print the hide or show the correct label at the
bottom of the report as each copy prints...- Hide quoted text -

- Show quoted text -

What will happen with multiple page invoices?
 
K

kronsj

Brian,
Let's try this...
Don't use the Printout to create 5 copies, just use the normal print (of
one report).. but...
using a suggestion on a previous post regarding this same problem.

I would suggest creating a small table lie this
SortOrder CopyDesc
------------------------------
1 "Original Copy"
2 "Customer Copy"
3 "File Copy"
4 "Accounting Copy"

Add this table to your query behind the report... with no join.
This is a cartesian realtionship. This will cause 4 identical tickets
(thus 4 pages) to be delivered to the
report... each ticket with it's own SortOrder and CopyDesc for your footer.
Group and Sort your report on SortOrder, and cause a page break after
each ticket.
An unbound text control in the page footer, with a ControlSource of...
= [Desc]
should display different values, each on it's own ticket page.
Haven't tested this exact setup, but I've used the Cartesian relationship
before, for creating X copies of the same address label.
This is the way I'd go at it.
--
hth
Al Campagna
Microsoft Access MVPhttp://home.comcast.net/~cccsolutions/index.html
"Find a job that you love... and you'll never work a day in your life."




I have a custom Access application that handles my companie's Inventory and
Invoicing. We are in the process of converting the Invoice report from a
dot
matrix to a laser printer. This invoice also is used as a delivery ticket
which is signed by the customer requiring the laser invoice form to be
carbonless. I found a 5 part carbonless laser form that works great andI
have been able to use code to print the 5 copies and non-coallated using
the
PRINTOUT method. I am trying to go with a completely blank invoice form.. I
have ran into an issue with trying to print on the bottom of the report
what
each five copies are designated for. For example on Page one copy one I
want
to print "Original" then on Page one copy two I want to print "File Copy"
and so on till all five copies of page one are complete. Then continue
this
process on page two until all pages have been printed....
This is the code I use to print the 5 copies.
DoCmd.OpenReport "InvoiceLaserDiscount", acViewPreview, , "[Invoice No]=
Forms![Invoices]![Invoice No]"
DoCmd.PrintOut , , , , 5, False
DoCmd.Close acReport, "InvoiceLaserDiscount"
If I could retrieve a variable of some kind of which copy it was
printing. That way I could print the hide or show the correct label at the
bottom of the report as each copy prints...- Skjul tekst i anførselstegn -

- Vis tekst i anførselstegn -

Al:
How would that Query look. If I insert a tabelfield (ex.
Reportversions.text) I got a request for that value.... maybee I'm
blind...
 
A

Al Campagna

You could use the footer's OnFormat event to set the text value in the
page footer...
As the report prints it counts page footers.
At ReportFooter OnFormat, the counter is reset to 0.

Option Compare Database
Option Explicit
Dim PageFootCtr As Byte
--------------------------------------------
Private Sub PageFooter_Format(Cancel As Integer, FormatCount As Integer)
PageFootCtr = Nz(PageFootCtr) + 1
Select Case PageFootCtr
Case 1
txtCopyName = "First"
Case 2
txtCopyName = "Second"
Case 3
txtCopyName = "Third"
End Select
End Sub
---------------------------------------------
Private Sub ReportFooter_Format(Cancel As Integer, FormatCount As Integer)
PageFootCtr = 0
End Sub

--
hth
Al Campagna
Microsoft Access MVP
http://home.comcast.net/~cccsolutions/index.html
"Find a job that you love... and you'll never work a day in your life."


Brian,
Let's try this...
Don't use the Printout to create 5 copies, just use the normal print
(of
one report).. but...
using a suggestion on a previous post regarding this same problem.

I would suggest creating a small table lie this
SortOrder CopyDesc
------------------------------
1 "Original Copy"
2 "Customer Copy"
3 "File Copy"
4 "Accounting Copy"

Add this table to your query behind the report... with no join.
This is a cartesian realtionship. This will cause 4 identical tickets
(thus 4 pages) to be delivered to the
report... each ticket with it's own SortOrder and CopyDesc for your
footer.
Group and Sort your report on SortOrder, and cause a page break after
each ticket.
An unbound text control in the page footer, with a ControlSource of...
= [Desc]
should display different values, each on it's own ticket page.
Haven't tested this exact setup, but I've used the Cartesian relationship
before, for creating X copies of the same address label.
This is the way I'd go at it.
--
hth
Al Campagna
Microsoft Access MVPhttp://home.comcast.net/~cccsolutions/index.html
"Find a job that you love... and you'll never work a day in your life."




I have a custom Access application that handles my companie's Inventory
and
Invoicing. We are in the process of converting the Invoice report from
a
dot
matrix to a laser printer. This invoice also is used as a delivery
ticket
which is signed by the customer requiring the laser invoice form to be
carbonless. I found a 5 part carbonless laser form that works great and
I
have been able to use code to print the 5 copies and non-coallated
using
the
PRINTOUT method. I am trying to go with a completely blank invoice
form. I
have ran into an issue with trying to print on the bottom of the report
what
each five copies are designated for. For example on Page one copy one I
want
to print "Original" then on Page one copy two I want to print "File
Copy"
and so on till all five copies of page one are complete. Then continue
this
process on page two until all pages have been printed....
This is the code I use to print the 5 copies.
DoCmd.OpenReport "InvoiceLaserDiscount", acViewPreview, , "[Invoice No]
=
Forms![Invoices]![Invoice No]"
DoCmd.PrintOut , , , , 5, False
DoCmd.Close acReport, "InvoiceLaserDiscount"
If I could retrieve a variable of some kind of which copy it was
printing. That way I could print the hide or show the correct label at
the
bottom of the report as each copy prints...- Hide quoted text -

- Show quoted text -

What will happen with multiple page invoices?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top