Jump to content
Server Maintenance This Week. ×

FM Go 12 iPad Printing without Dialog Workaround - Needs some hacks


This topic is 3872 days old. Please don't post here. Open a new topic instead.

Recommended Posts

Hi Guys,

 

I've built a iPad registration kiosk for a client at his business place. Everything seems to be working just fine, but on the last step to complete the registration I need the iPad to print the registration out for the back office. That also works fine, but the Print Dialog box on ipad is un-avoidable according to FileMaker Go Documentation. This dialog throws off most customers and hinders the registration process. I need to find some type of work around for this so customers are not prompted with the print dialog.

 

Also, my client doesn't want to have to have to print manually print each registration from the desktop interface in the back office. This should be automatic.

 

I thought of some server-side scheduled script, but the server is remote, so it won't be able to get to the printer without some type of constant VPN connection to my customer's site. Too much overhead. This seems like too much overhead to maintain.

 

Is there any client-side scheduled scripts? Any other ideas would be great. 

 

Thanks!

 

Link to comment
Share on other sites

Check out the script step called, Install OnTimer Script.  I think it would allow the client in the backroom to have a print script run periodically without any active input.  (Probably you would want the OnTimer script to search for unprinted records, print without dialog, and then tag them as having been printed with a TimeStamp).

  • Like 1
Link to comment
Share on other sites

Thanks! I think that this might work and I've been doing some testing with it. Since I don't have a dedicated machine running for this purpose, It may interrupt the user when they're using the back-end of the system during the print. 

 

Essentially, I freeze the window, switch to a layout with no fields but the context has a connected table occurrence filtering for un-printed records. Then I go to related record, show all related records and then Print all records. Last, I mark all records as printed with Replace Field Contents and then go back to original layout. It's set to run every 60 seconds. Will report back with how it works in the field.

Link to comment
Share on other sites

Works like a charm!

 

Here's more detail:

1.Customer registers them-self on an iPad kiosk. During their record creation, two fields are auto-entered as "NEW" and 0 for "Status" and "Printed" respectively. <-(I supposed you can put whatever you want here or you only need a printed flag field)

2.Customer is done and never sees any pop-up about printing. perfect.

3.On the desktop system-The user logs in and is prompted during the Startup script if they are using the machine in which the printed is connected to it. <-Many smarter ways to accomplish this, but this was quick and dirty. I could detect the computer/machine and auto-select it as well

4.If yes to 3, Install On Timer Script every 60 seconds During typical use, it takes users about 1 minute or so to register, so normally it will only print one record at a time and also the user needs the printout right after someone registers.

 

My auto-printing script is very straight forward and doesn't seem to hinder the user process at all

I have a blank layout associated with my dashboard/back-end layout/table. Two constant calculation match fields - Status="New" and Printed=0. I create a new Table Occurrence (TO) of the customer records and connect them to the constant fields.

Works roughly like this:

Set Error Capture (on)
Freeze Window
Go to layout (blank layout) //<-because it loads MUCH faster over remote
Go To Related Record Show Only Related; Match Found Set; From Table: CustomerUnPrintedRecords; Using Layout CustomerPrintLayout  
If get(lasterror) = 0 //will throw error code if there are no matching records
    Perform Script (Print Script) //does a print setup and prints all records in found set
    Replace Field Contents [no dialog; CustomerRecord::PrintStatus;1] //switch all from 0 to 1
End If
Go To Layout[Original]
Exit Script[]

 

In any case that there's a back log, the first time the script is called, it'll obviously catch itself up. I could make a prompt/notification that says something like "more than X records are un-printed." Say the user needs to reboot the desktop...maybe they're down for 5-10 minutes, and in that time maybe 4-5 customers register on a busy day. No big deal to print that many.

 

The one hitch, which this is mainly with running off a remote server, is when doing the printer setup. You need to make the Print Script Steps from a machine running filemaker that's connected to the computer/network in which the printed is connected to. Also, you can't edit that step remotely because you'll lose the printer settings. I've created some sub-routines so I can just call them when I need to and work remotely.

 

Hope this helps anyone else out there trying to accomplish this.

 

I'm still keen to discuss other techniques/hacks for this. If I get more feedback from my client as they begin to use this more and more I'll be sure to post updates.

Link to comment
Share on other sites

 

It's set to run every 60 seconds.

That could get to be very annoying for the backend client.  They might want a way to turn this on or off, or at least change the time interval.

 

If there is actually something to print, and the system will be frozen for awhile, you might want to add a commit or refresh screen step in your script, plus some text on the layout that states, "Customer registration is printing..." 

Link to comment
Share on other sites

On Mac OS X you can run multiple instances of FMP, either within the currently logged in user (difficult) or more easily with another user account. The second user account could quite happily run in the 'background' without interrupting the main user.

 

Other than this try VirtualBox to run a virtual instance.

Link to comment
Share on other sites

This topic is 3872 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.