7 Replies Latest reply on Sep 7, 2013 9:44 AM by RLM

    Best way to capture simple customer registration info onsite

    RLM

      Title

      Best way to capture simple customer registration info onsite

      Post

           I run an event business and need the ability for customers to complete a very basic registration form on-site (name, select group name from drop down list, email address and phone number) as they enter the event space.

           Upon completing the form and hitting submit, a new form should automatically pop up for the next customer. 

           No customer should be able to review another person's record.

           I will provide the customer data entry devices (eg. iPads or Chromebooks or notebooks) however, my device selection will in part be dictated by the best methods proposed in response to this post.

           Ideally, I would like to do this with iPads and was thinking that FileMaker Go combined with IOS' Guided Access (which prevents users from switching apps) would do the trick. However, I'm relatively new to FM development and am seeking input from those more experienced.

           The event space will have local WiFi connectivity but not necessarily internet access. I was planning to use FileMaker Networking or Instant Web Publishing. 

           The customer registration data will be used downstream to create custom event passes that will grant them access to the event.

           Any insights would be greatly appreciated. 

           Many thanks in advance.

           Rob

            

        • 1. Re: Best way to capture simple customer registration info onsite
          philmodjunk

               I'd set up a form view layout for this where every field located on this layout is a field with global storage. When the user completes the form, they tap a button labeled "save". That button performs a script that:

                 
          1.           Checks for correct complete data entry and highlights any deficiencies that need to be corrected/completed by the user.
          2.      
          3.           Creates a new record in your database table and copies the data from the global fields to corresponding non-global fields in this new record. Auto-enter calcs can be used so that all that need take place is the new record/request script step.
          4.      
          5.           Clears all of the global fields so that the layout is ready for the next user.
                       

               A cancel button can just do part 3 above. And there are ways to use InstallOnTimerScript to also cancel the input after a specified interval if the guest walks away from the device without completing the data entry.

          • 2. Re: Best way to capture simple customer registration info onsite
            RLM

                 Thanks for the reply. Can you please explain the recommendation for setting up fields for global storage which are subsequently copied versus creating a layout view that contains the fields in the table where they will ultimately reside?

                 Thanks so much 

                  

                  

            • 3. Re: Best way to capture simple customer registration info onsite
              philmodjunk

                   It makes canceling out of the registration process much simpler to implement (no new record is created until data entry is complete and valid) and also keeps users from having any possible access to another person's registration data as they will be on a layout that only displays data from the global fields.

              • 4. Re: Best way to capture simple customer registration info onsite
                RLM

                     Thank you. This makes perfect sense and is very helpful. Unfortunately, I'm a newbie and am struggling with some of the steps you've proposed. Would you be interested in doing a bit of work for hire? Thanks.

                • 5. Re: Best way to capture simple customer registration info onsite
                  RLM

                        

                       Thank you! Your feedback has been incredibly helpful. I'm almost there. Let me explain what I've done and where I'm stuck. I'm guess you'll spot my errors immediately.
                        

                        

                  Accomplished
                              
                  1.                Created global fields in the master table
                  2.           
                  3.                Created an iPad specific layout using these global fields along with a Save button that triggers a "Submit" script (below)
                  4.           
                  5.                Created a "submit" script that uses Set Field Name to copy each global field value to its non-global counterpart; uses Show Custom Dialog to instruct customer where to do next (eg. proceed to the check-in area) and use the New Record/Request to clear and create a new record
                  6.           
                  7.                Created a "Customer" user and set privileges to restrict it to just the one layout 
                  8.           
                  9.                Determined that using IOS Global Access I can actually block specific areas of the screen from being accessed, like FileMaker pro settings
                  10.           
                  11.                The form works fine from an iPad and writes new records, however, a few challenges persist
                  12.      
                  Challenges
                              
                  1.                Users can still browse records using the FileMakerGo navigation. They don't see any data, however, if they happen to select an existing record their entry will overwrite the data in that old record. I'm wondering if I should create a separate table for these global fields?
                  2.           
                  3.                One the of fields in the master table is set up as a Serial Number set to increment by 5 each time a new record is created to provide a unique ID for each record. I'm using a CNS barcode plugin to calculate a container with a barcode image from this number. When I enter a record via the iPad, the UID is correctly generated in the table, however, the CNS plugin won't create the barcode. If I go into that record, select the data, remove it and then paste it back in the plug-in generates the barcode. Also, if I enter a customer registration record from a computer using the same exact layout I have no issue with the plugin.
                  4.           
                  5.                What is the best way to ensure that fields are not empty? 
                  6.           
                  7.                What is the best way to validate a properly formatted email address (e.g.. no leading/trailing spaces, presence of "@ "and "." as well as invalid characters?
                  8.           
                  9.                What is the best way to validate a properly formatted phone number as xxx-xxx-xxxx?
                  10.      

                        

                       Thanks again for all of your help.

                  • 6. Re: Best way to capture simple customer registration info onsite
                    philmodjunk
                         

                              Users can still browse records using the FileMakerGo navigation. They don't see any data, however, if they happen to select an existing record their entry will overwrite the data in that old record. I'm wondering if I should create a separate table for these global fields?

                         Sounds like your script is missing a step where it first creates a new record and thus does not over write any existing data. But yes, putting the global fields in their own table would be useful and this does not require any script chanes as long as you have global storage specified for these fields

                         2 Plug ins are not supported in FileMaker GO. You'll need to use a computer with FileMaker Pro installed to use the plug in.

                         3. Not Isempty (Yourfield)

                         In a script, you can have steps like:

                         If [IsEmpty (YourTable::Globalfield1) // user error ]
                            Show Custom Dialog ["Please enter data in to field 1" ]
                            Exit Script[]
                         End If

                         That is performed when the save button is clicked. You can also put such code into script triggered by the ONObjectValidation trigger, but this is simpler for a novice to set up.

                         4. For the last two, I'd combine an auto-enter calculation speciifed in Field options to "fix" most issues and then check for errors in the same script as the portion shown above.

                         For the email address field, you can use Trim ( self ) as an auto-enter calculation to just remove leading and trailing spaces. Then this code will check for the existance of one @ and at least one period to the right of it.

                         If [ PatternCount ( Yourtable;;Field ; "@" ) = 1 and Position ( YourTable::Field ; "." ; Length ( YourTable::Field ) ; -1 ) > Position ( YourTable::Field ; "@" ; 1 ; 1 ) ]

                         5. Again we use an auto-enter calculation to strip out all user supplied formatting and add our own to get consistent data entry. Your script can then use the Length function as a test to confirm that the number is the correct length.

                         This is for US phone numbers. It will need changing for numbers in other countries:

                         See this thread for a sample calculation: Formatting a text as phone number

                    • 7. Re: Best way to capture simple customer registration info onsite
                      RLM

                           @PhilModJunk - Thank you so much for taking the time to help me. I've managed to get through every issue and have learned so much as a result of your guidance. I now have a production solution in place that works great! Thanks again. RLM