There was a webinar on this subject recently. Have a look in the resources section.
I took a look through the resources section and I attended a webinar on the topic but have not been able to find a detailed description or outlined example of the scripts needed to accomplish the sync. Any additional information would be incredibly helpful.
Watch the webinar by James Wesolowski from Colibri Solutions. He discusses the techniques and walks through the scripts that he developed.
Instead of downloading local copies to your ipads my suggestion is:
- Have your solution with data running on the server.
- Build a FileMaker Go solution - have parallel tables with the data you need offline.
- Build a script synchronizing with the server tables on demand, when your users are connected.
A good advise:
If it is possible and logical with your business model you should avoid having to synchronize the same datasets two ways. Example:
- Productlist: One way from Server to FileMaker Go clients.
- Orders: One way from FileMaker Go to Server.
The entities (product/order) are just examples. But by not letting the users on the iPad update the relatively static product list you will not have to consider which data to use.
Is this helpfull?
With relatively static data like a productlist, crm data (people, telephone numbers etc) you could choose to use the import script step.
This could also be used for transactional data like orders. But here I would considder using a more procedure oriented approach. Let the script create the record in the other system, set the data via scripts and mark the transaction done when you have checked that the “new order" or whatever is correctly transferred to the server. This will ensure that you can continue and get correct data transferred at a later time if the connection should be broken during the procedure.
Thank you so much for the advice. I figured out a way to work around my issue, but I've run into a bit of a snag. Here is what I did:
Using the instructions provided in the development guide, I created a mobile file and a server file. The mobile file is downloaded through GoConnect to the ipad and then lives locally on the ipad. Our system is a candidate evaluation system, so the evaluators will then take the ipads with the student records living locally and evaluate the students they see that day. At the end of the day, the evaluator enters a wifi area and will need to sync their evaluations with the server database living on our mac mini. To do this, we have the ipad user login remotely to the server database and do an import to the remote database.
What I'd like to do, in order to avoid asking the evaluators to close their local mobile file and open the remote server file in order to do the import, is have the evaluator click a button at the end of their evaluation which will briefly open the remote database, perform the script to import the updated records then close the remote database. The snag I run into, is that because Filemaker Go doesn't use a standard Close File script, and needs the Open URL function, the script will open the remote server database and then stop saying it can't find the mobile database (which I'm thinking is because the mobile database is still open.) Is there a way to perform a script within the mobile database that will open the remote database, close the mobile database, perform the import script within the remote database and then reopen the mobile database?
Let me know if you need more info.
I wish this kind of sync we're easier to build, but as you're finding out, there are a lot of challenges. We built GoZync to address them...
How can we let users work offline in FileMakerGo and then get their work back to the main FMP system when they do get an internet connection? We can’t ask people to email a bunch of files to be processed manually, nor can we just open the served files and start importing records: what if the connection drops?
GoZync is a framework for solving these sync issues. It is a set of scripts you can add to your existing solutions, and it comes with example files you can use as the basis for your mobile solutions if you'd like.
If you're working in situations where disconnects are possible (shaky WIFI or 3G) you may want to check it out: http://www.seedcode.com/gozync
You may have seen GoZync in the DevCon keynote last year. If not, you can find a video of it in action here: http://www.youtube.com/watch?v=ooDGs6tD2jA
I hope that helps,
This is all you need:
- You can import from remote server (import data from the remote server to the iOS device) - Import to the iOS
- You can import to the remote server (import data from the iOS devise to the remote server) - Export to the remote server
You can also remotely run a script on the remote server from the iOS devise using a external data source in the Perform Script script step to do a search before importing from the server to import only the records you need.
Fin Finaud Consultant
I was just working on that last night, this is working for me and the Remote version of the software isn't opening on the iPhone, this isn't a done and polished version yet but it's working great to this extent.
Script run on the iPhone to start syncing back to the Desktop:
Open URL [No dialog; ""FMP7Script://192.168.11.3/Bob-Notes.fp7?script=SyncToDesktop"]
Which runs this script back on the Desktop, similar to the example giving in the FM Go manual:
Set Variable[$FilePath;Value:Get(DocumentsPath) & “Bob-Notes.fp7”]
Import Records[No dialog; “$FilePath”; Update Existing; Mac Roman] where the path to the source file on the device is file:$FilePath
No doubt I'll build a doodad for the user to enter their server address. My apologies if there are any typos above, it's too bad we can't copy and paste script text here and I didn't want to bother with graphics.
I wish it were always that easy.
Importing records from the server to your iOS device and vice versa is probably good enough if you are on Wi-Fi, especially if you on not accessing the server over the internet. But unfortunately its pretty tricky to ensure that it actually works well once you venture onto the 3G network. The problem is that dropped connections are a reality once you are off nice fat WiFi signal. And if your half way through your import when the connection goes south, it may be pretty tricky to un-tangle. There is no simple way to determine what went through and what didn't.
GoZync was designed for this purpose. It works even when the internet doesn't :-)
By the way I am going to touch on this topic a bit at DevCon in August in my session called, "Design For Offline: Building FileMaker Go Apps That Work When The Internet Doesn't".
I hope that helps
Dear Todd and John,
I realize that free advertizing is dandy but do you really think it appropriate that every question about Syncing Go has several responses that are nothing more than Ads for GoZinc?
I would think that 1 per would be plenty and would quit wasting all of our times and filling up the blog with useless responses when we get your Response Ads. No doubt you have a wonder ful product but we all know that you are out there if we need you and want to pay for what you offer.
Thanks for your consideration.
I have the same problem. Synching is very important to my work also. However, synching looks not to be that easy.
The basis for all this is here:
My experience with the procedure mentioned in this link is that example 1 (remote to local) perfectly works. However example 2 (local to remote) seems not to work. I spent many hours with it. The “import to remote” script when run remotely in Filemaker Go always says “The file Source.fp7 could not be opened (not found)”. Could this be made to work, I suppose all further items could be handled easy.
Given your vast history with technet and years of contribution, I am in no place to challenge your authority on the topic of assessing what information is useless versus that which is not. That being said, the next time you get inspired to scribe pearls of wisdom ala , "
...quit wasting all of our times and filling up the blog with useless responses", and proceed to direct it at not one, but TWO highly respected tribal elders who have contributed thoughts unique to this (or any) thread, fight the urge to imply that you are speaking on all of our behalfs. If you find it difficult, give this script I wrote a try....
SetVariable $mymantra, value="Filemaker is an amazing tool ! I don't need to be"
SetField My::Forehead, value=$mymantra
as far as whether or not to commit record, Todd Geist did a wonderful session on the topic at devcon last year.
Give me a minute to review my notes and I'll swing back around.
Thank you for you consideration !
p.s. A little black humor Lance, nothing more. A real friend is the one who will tell you when you are being rude.
Apparently you misread, I did not imply that I was speaking for anyone but me, that's why my comment was "I would think..."
Tribal Elder or not it seems inappropriate to me to have multiple ads inserted into a single dialog while adding nothing more to the conversation. One per conversation should do the job of advertizing for free. I am familiar with their work and it has been helpful.
If you want to talk history and contributions, I was with Technet back when it cost money every year but haven't had a use for it in quite a while until recently, and contributed whenever I could add something to the conversation.