Printer Control
-
Hi, I am getting around to using a printer direct. It is a Steep Learning Curve! Prior to this, I produced Text Files, which could be Printed via Notepad. Grabbed the Bull by the Horns, Want to print Straight from the Program. I am using MFC42. The Target Machines are Win XP-SP1. (None are Internet Enabled, The System is Outside the Internet) The Second Hand Win 8 computer I use to write on, has a Device Driver for an HP Printer. All goes well, until I hit the Print button in the Print Dlg. Then everything crashes. End up After the Crash with a Dlg to tell me in very many words that the printer device could not be found! Now, I know that there is no physical printer attached to my machine, but, there should be a more graceful idea of notifying me about that fact, other than crashing. For Instance, Can I query the CDC about a Printer being Plugged In, etc. Kind Regards, :)
Bram van Kampen
-
Hi, I am getting around to using a printer direct. It is a Steep Learning Curve! Prior to this, I produced Text Files, which could be Printed via Notepad. Grabbed the Bull by the Horns, Want to print Straight from the Program. I am using MFC42. The Target Machines are Win XP-SP1. (None are Internet Enabled, The System is Outside the Internet) The Second Hand Win 8 computer I use to write on, has a Device Driver for an HP Printer. All goes well, until I hit the Print button in the Print Dlg. Then everything crashes. End up After the Crash with a Dlg to tell me in very many words that the printer device could not be found! Now, I know that there is no physical printer attached to my machine, but, there should be a more graceful idea of notifying me about that fact, other than crashing. For Instance, Can I query the CDC about a Printer being Plugged In, etc. Kind Regards, :)
Bram van Kampen
-
Are you using CPrintDialog Class[^] to get the details of the printer? If you do not have a physical printer attached you can use the MS XPS writer, or if you have a PDF print application installed you can use that.
Well, Thanks Richard. I worked the sample given by Chris Mauder on the MFC Forum about Printing without the Document-View Architecture. I use the CPrintDialog to obtain a pointer to a device Context, presumably in my case pointing to a HP Printer,(Apparently Installed by the Previous Owner of the Laptop) and all appears to work well. I retrieve a (pointer to) a CDC from the CPrintDialog, and the Pointer is Not NULL. The Only thing is that there is no HP, (or, any) Printer Plugged In. (It is my Coding Laptop) My experience with say 'MS Office' is, that when the printer is not actually plugged in at the time, that the job gets spun off to the print spooler where it remains until that printer becomes available. Is this a Feature of the Windows Print Spooler, or, a Feature of 'MS Office'? The result in my case is a very major Foul Up, and, Minutes Later, a Message from the HP Driver that the Device cannot be found, complete with Major Advice to check Cable Connections, and a Range of Other Things. Now, on Further Reflection, (time for quiet reflection is something that we are unlikely (and Unwisely) allow to afford ourselves when hunting for Bugs.) It may well be that the HP Printer Driver is corrupted. My Coding Laptop is not on the Internet for obvious reasons.(Installation of the "Ms Dev Studio97" on a Win7 Computer gives an Immediate alarm under 'IsGenuine' for the OS) I'll try to install another printer driver, (from a CD), and see how it goes. I am ashamed to say that I have avoided Printing for the last 25 years, actually, since my Dos Days. I have decided to bite the bullet on this Application. I Dealt with printing in the past by sending things to a Text File, and to use NotePad, when a Printout was needed. Also, seeing that I only need to print only a few pages, mostly One A4, sometimes 2 or 3, I did not go to the complication of doing this in a Worker Thread. I want to learn how to Crawl, before trying to learn how to Run. Would this have an Impact. Chris Mauder's example did not mention threads. The thing is, when things go wrong, and, especially in a for me a New and crucial Field, is: Am 'I' doing something Wrong, or Misunderstanding Something. Once Again, thanks for your response, Richard. I'll keep you posted on how I get on. :) :)
Bram van Kampen
-
Well, Thanks Richard. I worked the sample given by Chris Mauder on the MFC Forum about Printing without the Document-View Architecture. I use the CPrintDialog to obtain a pointer to a device Context, presumably in my case pointing to a HP Printer,(Apparently Installed by the Previous Owner of the Laptop) and all appears to work well. I retrieve a (pointer to) a CDC from the CPrintDialog, and the Pointer is Not NULL. The Only thing is that there is no HP, (or, any) Printer Plugged In. (It is my Coding Laptop) My experience with say 'MS Office' is, that when the printer is not actually plugged in at the time, that the job gets spun off to the print spooler where it remains until that printer becomes available. Is this a Feature of the Windows Print Spooler, or, a Feature of 'MS Office'? The result in my case is a very major Foul Up, and, Minutes Later, a Message from the HP Driver that the Device cannot be found, complete with Major Advice to check Cable Connections, and a Range of Other Things. Now, on Further Reflection, (time for quiet reflection is something that we are unlikely (and Unwisely) allow to afford ourselves when hunting for Bugs.) It may well be that the HP Printer Driver is corrupted. My Coding Laptop is not on the Internet for obvious reasons.(Installation of the "Ms Dev Studio97" on a Win7 Computer gives an Immediate alarm under 'IsGenuine' for the OS) I'll try to install another printer driver, (from a CD), and see how it goes. I am ashamed to say that I have avoided Printing for the last 25 years, actually, since my Dos Days. I have decided to bite the bullet on this Application. I Dealt with printing in the past by sending things to a Text File, and to use NotePad, when a Printout was needed. Also, seeing that I only need to print only a few pages, mostly One A4, sometimes 2 or 3, I did not go to the complication of doing this in a Worker Thread. I want to learn how to Crawl, before trying to learn how to Run. Would this have an Impact. Chris Mauder's example did not mention threads. The thing is, when things go wrong, and, especially in a for me a New and crucial Field, is: Am 'I' doing something Wrong, or Misunderstanding Something. Once Again, thanks for your response, Richard. I'll keep you posted on how I get on. :) :)
Bram van Kampen
Bram van Kampen wrote:
Is this a Feature of the Windows Print Spooler, or, a Feature of 'MS Office'?
That's the spooler, which will try to send the file to the print driver. The driver may then pop up a dialog to say the printer is offline. In all my experience the file will remain in the spooler until it gets printed, or the user cancels it. What you call a major Foul Up sounds like normal behaviour. As I said before, you should have the Windows XPS print driver (creates an XPS file) installed so you can test with that.
-
Bram van Kampen wrote:
Is this a Feature of the Windows Print Spooler, or, a Feature of 'MS Office'?
That's the spooler, which will try to send the file to the print driver. The driver may then pop up a dialog to say the printer is offline. In all my experience the file will remain in the spooler until it gets printed, or the user cancels it. What you call a major Foul Up sounds like normal behaviour. As I said before, you should have the Windows XPS print driver (creates an XPS file) installed so you can test with that.
He is using XP SP1. That does not has the XPS driver and installing it requires probably a higher SP version. But using a PDF driver as already suggested by you should do the trick.
-
He is using XP SP1. That does not has the XPS driver and installing it requires probably a higher SP version. But using a PDF driver as already suggested by you should do the trick.
-
You are right. I missed that.
-
You are right. I missed that.
-
Well, I Got it to Produce the XPS File without Complaining. However, The XPS Reader complains it Cannot Read the XPS File. Both in Win7 and Win 10. The Text I propose to Print is as Follows:- It Renders in NotePad as:
Finding Old Orders in the Shop
Printed by on 01 09 16 - 23:40:14
Customer:-
TONY LOUGHLINIf The Item(s) are Found you should
Update the Computer Record, and
Destroy this Page!
Otherwise Inform Management of the
Discrepancies, by Returning this Page
Marked Up Accordingly!Order Nr 214058
Received on: 27/07/12 - 13:18:21
Not Confirmed Present since Completion
Qty Description Amount
1 lb Wash +Dry £11.00
========
Total For Order £11.00
Due for This Order £11.00Packaging:- -1Wb
========================================
Actually Found:-
Hangers Pastics Flatpacks WashBags
+---+ +---+ +---+ +---+
| | | | | | | |
| | | | | | | |
| | | | | | | |
+---+ +---+ +---+ +---+========================================
The XPS File I got was,in Binary. There is nothing wrong with the way I present My Data, Somehow the Printer will not Digest it. I Need to get to the bottom of this, and everybodies help is much appreciated. If Needed, will show the Code! Regards, :) :) :)
Bram van Kampen
-
Well, I Got it to Produce the XPS File without Complaining. However, The XPS Reader complains it Cannot Read the XPS File. Both in Win7 and Win 10. The Text I propose to Print is as Follows:- It Renders in NotePad as:
Finding Old Orders in the Shop
Printed by on 01 09 16 - 23:40:14
Customer:-
TONY LOUGHLINIf The Item(s) are Found you should
Update the Computer Record, and
Destroy this Page!
Otherwise Inform Management of the
Discrepancies, by Returning this Page
Marked Up Accordingly!Order Nr 214058
Received on: 27/07/12 - 13:18:21
Not Confirmed Present since Completion
Qty Description Amount
1 lb Wash +Dry £11.00
========
Total For Order £11.00
Due for This Order £11.00Packaging:- -1Wb
========================================
Actually Found:-
Hangers Pastics Flatpacks WashBags
+---+ +---+ +---+ +---+
| | | | | | | |
| | | | | | | |
| | | | | | | |
+---+ +---+ +---+ +---+========================================
The XPS File I got was,in Binary. There is nothing wrong with the way I present My Data, Somehow the Printer will not Digest it. I Need to get to the bottom of this, and everybodies help is much appreciated. If Needed, will show the Code! Regards, :) :) :)
Bram van Kampen
Bram van Kampen wrote:
The XPS File I got was,in Binary.
As you would expect, since it also includes formatting information about the content. I have used this to test printing in my applications, and never had a problem. I guess you need to look at your actual printing code.
-
Bram van Kampen wrote:
The XPS File I got was,in Binary.
As you would expect, since it also includes formatting information about the content. I have used this to test printing in my applications, and never had a problem. I guess you need to look at your actual printing code.
Well, The Binary I get refuses to open. Here is my Printing Code:-
///////////////////////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// PRINTING!!
///////////////////////////////////////////////////////////////////////////////////// OnClick the Print Button
void CConfirmOrdersStep1Dlg::OnPrint()
{
if(CreateViewForPrinting()==false){
AfxMessageBox("No Orders have been Marked for Printing");
return;
}
CDC dc;
CPrintDialog printDlg(FALSE);if (printDlg.DoModal() == IDCANCEL) // Get printer settings from user return; dc.Attach(printDlg.GetPrinterDC()); // Get and attach a printer DC dc.m\_bPrinting = TRUE; CString strTitle="Old Orders"; // Get the application title //strTitle.LoadString(AFX\_IDS\_APP\_TITLE);
// strTitle.Format("Date:Confirming Old Orders By:- %s-%s", UserName,Date);
DOCINFO di; // Initialise print document details memset(&di, 0,sizeof (DOCINFO)); di.cbSize = sizeof (DOCINFO); di.lpszDocName = strTitle; BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job // Get the printing extents and store in the m\_rectDraw field of a // CPrintInfo object CPrintInfo Info; Info.m\_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES)); OnBeginPrinting(&dc, &Info); // Call your "Init printing" function // Now, Print every Page! UINT page; for (page=Info.GetMinPage(); page <= Info.GetMaxPage() && bPrintingOK;page++){ dc.StartPage(); // begin new page Info.m\_nCurPage = page; PrintPage(&dc, &Info); // Call your "Print page" function bPrintingOK = (dc.EndPage() > 0); // end page } OnEndPrinting(&dc, &Info); // Call your "Clean up" function if (bPrintingOK) dc.EndDoc(); // end a print job else dc.AbortDoc(); // abort job. dc.DeleteDC(); // delete the printer DC
}
// As from Chris Mauder.
// Instead of Global I made it a member
//
// m_pView (Type COrderPageView) contains a list of PageFragments
// Th -
Well, The Binary I get refuses to open. Here is my Printing Code:-
///////////////////////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// PRINTING!!
///////////////////////////////////////////////////////////////////////////////////// OnClick the Print Button
void CConfirmOrdersStep1Dlg::OnPrint()
{
if(CreateViewForPrinting()==false){
AfxMessageBox("No Orders have been Marked for Printing");
return;
}
CDC dc;
CPrintDialog printDlg(FALSE);if (printDlg.DoModal() == IDCANCEL) // Get printer settings from user return; dc.Attach(printDlg.GetPrinterDC()); // Get and attach a printer DC dc.m\_bPrinting = TRUE; CString strTitle="Old Orders"; // Get the application title //strTitle.LoadString(AFX\_IDS\_APP\_TITLE);
// strTitle.Format("Date:Confirming Old Orders By:- %s-%s", UserName,Date);
DOCINFO di; // Initialise print document details memset(&di, 0,sizeof (DOCINFO)); di.cbSize = sizeof (DOCINFO); di.lpszDocName = strTitle; BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job // Get the printing extents and store in the m\_rectDraw field of a // CPrintInfo object CPrintInfo Info; Info.m\_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES)); OnBeginPrinting(&dc, &Info); // Call your "Init printing" function // Now, Print every Page! UINT page; for (page=Info.GetMinPage(); page <= Info.GetMaxPage() && bPrintingOK;page++){ dc.StartPage(); // begin new page Info.m\_nCurPage = page; PrintPage(&dc, &Info); // Call your "Print page" function bPrintingOK = (dc.EndPage() > 0); // end page } OnEndPrinting(&dc, &Info); // Call your "Clean up" function if (bPrintingOK) dc.EndDoc(); // end a print job else dc.AbortDoc(); // abort job. dc.DeleteDC(); // delete the printer DC
}
// As from Chris Mauder.
// Instead of Global I made it a member
//
// m_pView (Type COrderPageView) contains a list of PageFragments
// ThWell I just Notice, I forgot to Select the Font into the Printer Device Context. That would of course have an impact! Can anyone spot other errors? :)
Bram van Kampen
-
Well, The Binary I get refuses to open. Here is my Printing Code:-
///////////////////////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// PRINTING!!
///////////////////////////////////////////////////////////////////////////////////// OnClick the Print Button
void CConfirmOrdersStep1Dlg::OnPrint()
{
if(CreateViewForPrinting()==false){
AfxMessageBox("No Orders have been Marked for Printing");
return;
}
CDC dc;
CPrintDialog printDlg(FALSE);if (printDlg.DoModal() == IDCANCEL) // Get printer settings from user return; dc.Attach(printDlg.GetPrinterDC()); // Get and attach a printer DC dc.m\_bPrinting = TRUE; CString strTitle="Old Orders"; // Get the application title //strTitle.LoadString(AFX\_IDS\_APP\_TITLE);
// strTitle.Format("Date:Confirming Old Orders By:- %s-%s", UserName,Date);
DOCINFO di; // Initialise print document details memset(&di, 0,sizeof (DOCINFO)); di.cbSize = sizeof (DOCINFO); di.lpszDocName = strTitle; BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job // Get the printing extents and store in the m\_rectDraw field of a // CPrintInfo object CPrintInfo Info; Info.m\_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES)); OnBeginPrinting(&dc, &Info); // Call your "Init printing" function // Now, Print every Page! UINT page; for (page=Info.GetMinPage(); page <= Info.GetMaxPage() && bPrintingOK;page++){ dc.StartPage(); // begin new page Info.m\_nCurPage = page; PrintPage(&dc, &Info); // Call your "Print page" function bPrintingOK = (dc.EndPage() > 0); // end page } OnEndPrinting(&dc, &Info); // Call your "Clean up" function if (bPrintingOK) dc.EndDoc(); // end a print job else dc.AbortDoc(); // abort job. dc.DeleteDC(); // delete the printer DC
}
// As from Chris Mauder.
// Instead of Global I made it a member
//
// m_pView (Type COrderPageView) contains a list of PageFragments
// ThBram van Kampen wrote:
The Binary I get refuses to open.
Not sure what that means, or what is missing. If you do not select the font into the DC then it will just use a default, so you should still see some output. Given that this is Chris's original code, you may want to try talking to him.
-
Well, The Binary I get refuses to open. Here is my Printing Code:-
///////////////////////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// PRINTING!!
///////////////////////////////////////////////////////////////////////////////////// OnClick the Print Button
void CConfirmOrdersStep1Dlg::OnPrint()
{
if(CreateViewForPrinting()==false){
AfxMessageBox("No Orders have been Marked for Printing");
return;
}
CDC dc;
CPrintDialog printDlg(FALSE);if (printDlg.DoModal() == IDCANCEL) // Get printer settings from user return; dc.Attach(printDlg.GetPrinterDC()); // Get and attach a printer DC dc.m\_bPrinting = TRUE; CString strTitle="Old Orders"; // Get the application title //strTitle.LoadString(AFX\_IDS\_APP\_TITLE);
// strTitle.Format("Date:Confirming Old Orders By:- %s-%s", UserName,Date);
DOCINFO di; // Initialise print document details memset(&di, 0,sizeof (DOCINFO)); di.cbSize = sizeof (DOCINFO); di.lpszDocName = strTitle; BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job // Get the printing extents and store in the m\_rectDraw field of a // CPrintInfo object CPrintInfo Info; Info.m\_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES)); OnBeginPrinting(&dc, &Info); // Call your "Init printing" function // Now, Print every Page! UINT page; for (page=Info.GetMinPage(); page <= Info.GetMaxPage() && bPrintingOK;page++){ dc.StartPage(); // begin new page Info.m\_nCurPage = page; PrintPage(&dc, &Info); // Call your "Print page" function bPrintingOK = (dc.EndPage() > 0); // end page } OnEndPrinting(&dc, &Info); // Call your "Clean up" function if (bPrintingOK) dc.EndDoc(); // end a print job else dc.AbortDoc(); // abort job. dc.DeleteDC(); // delete the printer DC
}
// As from Chris Mauder.
// Instead of Global I made it a member
//
// m_pView (Type COrderPageView) contains a list of PageFragments
// Th -
Bram van Kampen wrote:
The Binary I get refuses to open.
Not sure what that means, or what is missing. If you do not select the font into the DC then it will just use a default, so you should still see some output. Given that this is Chris's original code, you may want to try talking to him.
Wel, I get a Binary File not recognised by the XPS Reader. I can open it as Binary in a HexVieuwer, and get nothing recognisable.
Bram van Kampen
-
Wel, I get a Binary File not recognised by the XPS Reader. I can open it as Binary in a HexVieuwer, and get nothing recognisable.
Bram van Kampen
When I look at an XPS print file it looks something like:
PK µC'I Metadata/Job_PT.xmlíW]s¢H}ߪý)Þ' &Ùh%NÝ4ZÁØ }Cè`|
´¢óë÷¶ã̬‰™™§éòš{Îážþ¸póqGgK–6ÿþë&+žƒœ'bÈý9gKŠöÞ*3!²†ªþŒÅ^qs?O‹ôIœûi¬–< Ò²P«šVSµk5“H¾=Øbžr/fešÏ•íªà{Ú²,ÏËÚyš‡’£¢>š÷öõ'…🽠‚·QÊA²ÏÀ¤Ð°žÈ•ŠŸÿJdÎÖ˜FP¨{è*which is fine, and the XPS reader opens it OK. As to why you cannot read yours is a total mystery. If you are using all the standard APIs (or their MFC equivalents) to create your print files, then they should at least be readable. Try changing the extension from
.xps
to.zip
and have a look at the content then. -
When I look at an XPS print file it looks something like:
PK µC'I Metadata/Job_PT.xmlíW]s¢H}ߪý)Þ' &Ùh%NÝ4ZÁØ }Cè`|
´¢óë÷¶ã̬‰™™§éòš{Îážþ¸póqGgK–6ÿþë&+žƒœ'bÈý9gKŠöÞ*3!²†ªþŒÅ^qs?O‹ôIœûi¬–< Ò²P«šVSµk5“H¾=Øbžr/fešÏ•íªà{Ú²,ÏËÚyš‡’£¢>š÷öõ'…🽠‚·QÊA²ÏÀ¤Ð°žÈ•ŠŸÿJdÎÖ˜FP¨{è*which is fine, and the XPS reader opens it OK. As to why you cannot read yours is a total mystery. If you are using all the standard APIs (or their MFC equivalents) to create your print files, then they should at least be readable. Try changing the extension from
.xps
to.zip
and have a look at the content then.Hi, Richard, Well, if it opens in your machine , there is evidently something wrong with my reader, and nothing wrong with the code I wrote to generate same. I'm away on a break for a few days. I had my 62nd Birthday 3 weeks ago, but, were unable to escape. We are trying enjoy life in semi retirement, with a small important money spinning business running in the background, powered by my software. I appreciate your comment, and will try changing the XPS ext to ZIP when I'm back. I Think that you know that I write software for Laundrettes and Dry-Cleaners, specifically for our own chain. There are No Trade or Other secrets buried in the Text Example I Sent. It is a Fictitious Customer with a Fictitious ancient Order. (The Bane of a laundrette is people not coming back to pay and collect, It Clogs up the shop, the work is done, but, the Till does not ring. ) The Program I am writing now, is a concerted attempt to attack this, by contacting customers. The First step there is, to ensure that ancient Orders that appear on the database, are still present in the shop. Whereas we Trust our staff, an order could have been given out, without the order being rang in, the staff pocketing the sale, and the Item remaining on the Database. At any rate, we do not want to contact customers over long forgotten items, when we no longer poses them, for whatever reason. It also gives staff an other activity at quiet Times. Instead of drinking cups of tea, they have a Screen of alternative, and More Productive activity. Making Phone Calls, and finding People's goods. If people's goods can not be found, then there is no point in ringing the customer. Let sleeping dogs lie, and Management writes the item off. We tried it manually, and got things like "Oh I forgot about that, I will collect it next Saturday" Saturday came and went, we all forgot, order still here. This new program will pursue only say 10 old orders at the time, but these orders will be pursued vigorously. Items Promised to be Collected By a date, will disappear of the ToDo List, but, will re-appear there after that date, if at that stage not collected and paid. The Interface is being designed so that Junior Staff can handle it, kicking major decisions back upstairs. The Document I tried to print was a form, for staff to go around the shop, and find the goods. The First Step. When you Opened the XPS File, could you read the Text as Follows:-
Finding Old Orders in the Shop
Printed by on 01 09 16 -
-
Hi, Richard, Well, if it opens in your machine , there is evidently something wrong with my reader, and nothing wrong with the code I wrote to generate same. I'm away on a break for a few days. I had my 62nd Birthday 3 weeks ago, but, were unable to escape. We are trying enjoy life in semi retirement, with a small important money spinning business running in the background, powered by my software. I appreciate your comment, and will try changing the XPS ext to ZIP when I'm back. I Think that you know that I write software for Laundrettes and Dry-Cleaners, specifically for our own chain. There are No Trade or Other secrets buried in the Text Example I Sent. It is a Fictitious Customer with a Fictitious ancient Order. (The Bane of a laundrette is people not coming back to pay and collect, It Clogs up the shop, the work is done, but, the Till does not ring. ) The Program I am writing now, is a concerted attempt to attack this, by contacting customers. The First step there is, to ensure that ancient Orders that appear on the database, are still present in the shop. Whereas we Trust our staff, an order could have been given out, without the order being rang in, the staff pocketing the sale, and the Item remaining on the Database. At any rate, we do not want to contact customers over long forgotten items, when we no longer poses them, for whatever reason. It also gives staff an other activity at quiet Times. Instead of drinking cups of tea, they have a Screen of alternative, and More Productive activity. Making Phone Calls, and finding People's goods. If people's goods can not be found, then there is no point in ringing the customer. Let sleeping dogs lie, and Management writes the item off. We tried it manually, and got things like "Oh I forgot about that, I will collect it next Saturday" Saturday came and went, we all forgot, order still here. This new program will pursue only say 10 old orders at the time, but these orders will be pursued vigorously. Items Promised to be Collected By a date, will disappear of the ToDo List, but, will re-appear there after that date, if at that stage not collected and paid. The Interface is being designed so that Junior Staff can handle it, kicking major decisions back upstairs. The Document I tried to print was a form, for staff to go around the shop, and find the goods. The First Step. When you Opened the XPS File, could you read the Text as Follows:-
Finding Old Orders in the Shop
Printed by on 01 09 16 -
Hi Bram, well I'm a few years older than you, so in theory I should have more knowledge locked in my brain. But you know what they say about theory and practice. When I said I could open the XPS file, I meant one that I generated here. If you can send me the one you generate I could have a look at it for you. Send me a private email and I can give you an address, or put it up on one of the public staging sites.