We updated the server the past two days, you should see some speed performance of our site.

Jump to content


Popular Content

Showing most liked content since 01/18/2018 in all areas

  1. 3 points
    May I suggest that you work with this version going forward. It clarifies key field names, reorganizes the graph, and eliminates "portal" from any table or relationship names. The TO may be used in a portal. But labeling the TO as someThing_someThingPortal hides actual relational concepts. Test File DemoJOBR.fmp12
  2. 2 points
    Hi Gilbert, There's a tiny box when you double-click the script step (Perform Script on Server) called "optional script parameters": That is where you need to enter your parameter. It could be a variable ($variable) or just text in quotes. Don't forget that you can't debug on the server, so you'll want to add error trapping very often and send yourself a mail if something can fail. Also, you might want to Exit the server script with a parameter, if you need to pass it back to your original script: Exit Script (parameter). And in your original script then you'll have to get that parameter back by: Get (ScriptResult). Hope this helps, Agi
  3. 1 point
    The formatting is already handled by the Highlight script you have. Actually, the process you want is already in place. The "OnRecordSave - Highlight Created Portal Row" script does what you want. Currently, the script trigger is on the entry field with an OnRecordSave trigger. You can use that same script to select and set the record as the active record on the layout. Nothing will be created, because there is nothing saved in that creation portal. So now you need to figure out when you want that trigger to run. OnLayoutLoad Only the first time the layout loads. Something else. For #1, that get get tricky if you have any scripts that leave the layout and come back. So I wouldn't advise that one. For #2: use the OnFirstWindowOpen trigger to set a global variable. In your script to go to the TV Pitch layout, test for that variable. If it exists, run that OnRecordSave script. It will do what you want. Then clear that variable. The next time your script to go to the TV Pitch layout, that variable won't be there, and it won't select the newest record every time.
  4. 1 point
    OK the site is now functioning on PHP7.2 was crazy to get it to work but were here - FULL SPEED AHEAD
  5. 1 point
    I just updated the site to PHP7 and this should really improve performance. Please let me know your experience!
  6. 1 point
    You'll have to loop through the records to export them. Name a variable $file in your script that will export the records, as you loop through them. Make that $file GetAsText (DB::container_field) where DB::container_field = the field you stored the videos in. Then when you Export Field Contents [<table::field>; "<filename>"; Automatically open; Create email] as Fitch mentioned above replace the <filename> with the variable you created (called $file).
  7. 1 point
    It sounds like you have video stored in a container field. To export the contents of a container field, the script step is Export Field Contents. Look at the two examples at the bottom of the help page I just linked and see if that gives you enough to go on. I'll be happy to help if you get stuck. I still don't understand what you meant in your first post when you say 3 fields. One is the title, one is the container -- what's the other one?
  8. 1 point
    You're 100% right. I've learnt more from your examples and your work than I have from anyone else. For me, these examples files do the trick Cheers & thx!
  9. 1 point
    I know seeing examples was one of the best ways for me to learn. Just happy to return the favor.
  10. 1 point
    Added fields to log creation timestamp. Added the sort to the portal based on the creation timestamp. Added object name to the portal, so we can use it to jump to it in the script. Create a new script to use OnObjectSave. Test File DemoJOBR.fmp12
  11. 1 point
    1. You can add a script trigger to field where you add a new line. Have it set the global fields to the values that connect the relationship the way you want. It may take some playing around with the different functions to get the IDs of the records you need. 2. Add an auto-enter timestamp field to the related table. Sort the portal on that field, descending order.
  12. 1 point
    Cut and paste at 1:00 AM does that to a guy. Sorry! Glad you figured it out.
  13. 1 point
    Your creation point is different. Because the Film Pitch Notes belong to the Film Title...you have to create it using a relationship to that table. Then you can use another global field to select that film to be the basis for which records you want to see. Test File Demo 2.fmp12 Note, that the Film Pitch Notes will be created being related to the film you have selected in the Film Pitch Portal.
  14. 1 point
    You got it, Josh and again, thank you. Works like a charm
  15. 1 point
    Good to hear. Post back if you have any questions about how it works.
  16. 1 point
    Josh!!! You did it!! Woot woot!! (doing the happy dance) Thank you soooo much! Beautiful work!! I knew this could be done and later this evening, I will try to follow your work to incorporate into the actual FM file. Once again, many thanks! Cheers!
  17. 1 point
    See if this is close. I added a couple relationships. one to add new TV SHOWS or FILM TITLES to the portal. one to select the show or film in the portal...which allows the fields on the right to display data from portal ( and show the correct data ). I added a step to the Highlight script. It sets the global field, that links the current record to the one you clicked on in the portal. Which also allows the you to display the data from the portal in the fields on the right. Dig into it. Let us know if you have any questions. As Bruce had mentioned, it would be wise to make a copy...then clean out stuff you are not using. There is a script trigger in the portal that was not linked to an actual script. Some relationships are not used ( at least in this file ) etc. Test File Demo.fmp12
  18. 1 point
    Hi Christoph, The FM Forums welcomes members of all skill levels. The only requirement being that they have familiarize themselves with the FileMaker basics. I opened your file, and the first thing I did was to organize the Relationship Graph. The Relationship Graph is not a ERD, however, it does give you insight to the file structure. The ERD should be setup when you are starting a new solution. I would recommend that you study what an ERD does, and how it fits into developing a databases. If you are not sure what an Entity Relationship Diagram (ERD) does, do a search for either ERD or Entity Relationship Diagram. This is just one of the hits that a Google Search found. https://www.lucidchart.com/pages/er-diagrams Here is a free ERD tool that is available at https://www.draw.io However, you can do one using a pen and paper. There is a FREE training class being provided by ISO FileMaker Magazine https://www.youtube.com/channel/UC92MpDPgdr-xEn3JRUAmZOQ I wish that someone had provided classes like this when I first started to develop in FileMaker, There are currently 4 Areas being covered by Matt Petrowsky so far, Environment, Fields and Calculations, Data Structures , and Layout Mode and Design, The Data Structure Lessons would help you a lot with Relationship Graph, He has spent a lot of time covering this section. There are other training sites that offer training, I can send you a list of them if you want. HTH Lee
  19. 1 point
    David this works... just native Java, no library required.. // ZipFilesOrDirectory( fm_fileIn ; fm_dirIn ; fm_fileOut ) // 15_10_02 JR // v2.0 // adds list of files to fm_fileOut from fm_dirIn // or zips a whole directory fm_dirIn to fm_fileOut import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream import java.text.Normalizer import java.text.Normalizer.Form SEP = System.getProperty('file.separator') fm_dirIn = fm_dirIn[-1] == SEP?fm_dirIn : fm_dirIn + SEP if (!fm_fileIn){ if (fm_fileOut.contains(fm_dirIn)) { return 'ERROR - can\'t recurse' } // end if try { topDir = new File(fm_dirIn) zipOut = new ZipOutputStream ( new FileOutputStream(fm_fileOut)) topDirLength = topDir.absolutePath.length() +1 topDir.eachFileRecurse { file -> relPath = file.absolutePath.substring(topDirLength).replace('\\', '/') if (file.isDirectory() && !relPath.endsWith('/')) { relPath += '/' } // end if if(relPath[0] =='.'){} else { entry = new ZipEntry(relPath) entry.time = file.lastModified() zipOut.putNextEntry(entry) if (file.isFile()) { zipOut << new FileInputStream(file) } // end if } //end if zipOut.closeEntry() } // end each zipOut.close() } catch(Exception e) { return e.getMessage() } //end try return true } else { files = fm_fileIn.split('\n') byte[] buffer = new byte[1024] zout = new ZipOutputStream(new FileOutputStream(fm_fileOut)) files.each{ item -> fin = new FileInputStream( adjust(fm_dirIn + "${item}") ) zout.putNextEntry(new ZipEntry( adjust("${item}") )) while ((len = fin.read(buffer)) > 0){ zout.write(buffer, 0, len) } //end while zout.closeEntry() fin.close() } //end each try{ zout.close() } catch (e) { return e.getMessage() } //end try return true } //end if
  20. 1 point
    Hi Beckham. Closely verify that your data will parses using one of the calculations. If not, then post a copy of the one(s) that broke. As Josh pointed out, the pattern of the data is critical. The more sample data that is provided, the better the chances that our calculations won't brake, as Josh demonstrated with the RightWords Function. Do not feel alone. Feel free to ask us what you don't understand about these calculation. There are resources available that can demystify things such as the Let Function. Lee
  21. 1 point
    ok, you make a good point, Filter (RightWords ( "ABCDEFG1-0a-12345a.jpg" ; 1 ) ; 1234567890 ) I will never use the RightWords again, really different in the results. Ok, that is a fib, LOL Always forget the GetValue Function. GetValue ( Substitute ( "ABCDEFG-01-12345.jpg" ; ["-" ; ¶] ; ["." ; "¶" ]) ; 3 ) Lee Beckham.fmp12
  22. 1 point
    Try something like this. Replace the text on the first let variable with your field value. Let ( [ fileName = "ABCDEFG-01-12345.jpg" ; dashCount = PatternCount ( fileName ; "-" ) ; periodCount = PatternCount ( fileName ; "." ) ; pos1 = Position ( fileName ; "-" ; 1 ; dashCount ) + 1 ; pos2 = Position ( fileName ; "." ; 1 ; periodCount ) ; result = Middle ( fileName ; pos1 ; pos2 - pos1 ) ] ; result )
  23. 1 point
    Ryan This looks to be fixed with ScriptMaster 5.09 and the latest iText 7.1.0 from Maven - on the Mac at least. Will let you know how I get on with testing, see in DocInfo for proof 00.pdf
  24. 1 point
    You would include another match field in the relationship.
  25. 1 point
    May I suggest that you use abstaction as described by Filemakerstandards.org? This will help protect the sql from field name changes, reserved words, etc. Yes, avoid used sql in calc fields because it's difficult to control when they recalc, and if they try to query a table that the user has open, the performance hit can be significant. So, to populate this field, you would define the sql in a script: set variable $result = mysql calc set field = $result However, not sure you even need SQL for this. The sum of related records can be calc'd simply using Sum(relationship::number_field), or simply display a related summary field on the parent record.
  26. 1 point
    OK, I fixed it, and the process might be interesting. Here's the original calc. Case ( dev.IsSet ( c_score_cache ) ; math.Fractile ( c_score_cache ; List ( prsn_PRSN~cross::c_score_cache ) ; 7 ) ; dev.Nil ) I started unwrapping the custom functions. `dev.IsSet` is just `not IsEmpty` and `dev.Nil is an empty string. Here's `math.Fractile`: // math.Fractile ( _value ; _list ; _pieces ) // Purpose: Return which fraction of a list of numbers the value appears in. // Parameters: _value: The value to get the fractile of // _list: The list of value the value is found within // _pieces: How many pieces to break the list into // Requirements: list.ValuePosition // math.RoundUpTo // Version: 1.0 - Charles Ross - 17-12-10 // Notes: Fractile is my own term for percentail or septile where the number of pieces determined by a parameter. // Percentiles can be computing by passing 100 to `_pieces` for example, and septiles by passing 7. Let ( [ _list = SortValues ( _list ; 2 ) ; _pos = list.ValuePosition ( _value ; _list ; 1 ) ; _count = ValueCount ( _list ) ; _fraction = _pos / _count ] ; math.RoundUpTo ( _fraction ; 1 / _pieces ) * _pieces ) I was mistaken earlier when I said there were no recursive functions being called. `list.ValuePosition` is, so for the time being I left that in. Unwrapping the three custom functions in the original calculation: Case ( not IsEmpty ( c_score_cache ) ; Let ( [ _list = SortValues ( List ( prsn_PRSN~cross::c_score_cache ) ; 2 ) ; _pos = list.ValuePosition ( c_score_cache ; _list ; 1 ) ; _count = ValueCount ( _list ) ; _fraction = _pos / _count ] ; math.RoundUpTo ( _fraction ; 1 / _pieces ) * _pieces ) ; "" ) At this point, the behavior was the same. So I unwrapped `math.RoundUpTo`. That function is: // math.RoundUpTo ( _number; _precision ) // Purpose: Rounds the number up to the nearest multiple of the precision. // Parameters: _number: The number to round. // _precision: The multiple to round to. // Version: 1.0 - Mikhail Edoshin - 06-01-01 // Notes: http://web.archive.org/web/20100122090742/ // http://edoshin.skeletonkey.com/2006/01/rounding_to_a_g.html // To round time use a precision that is the number of seconds you want to round to, for // example, a precision of 300 would round to the nearest 15 minutes. // To round currency to the nearest quarter, use a precision of 0.25. // Example: ( math.RoundUpTo ( 5 ; 2 ) = 2 ) // and ( math.RoundUpTo ( Time ( 1 ; 23 ; 45 ) ; 15 * 60 ) = Time ( 1 ; 30 ; 0 ) ) Ceiling ( _number / _precision ) * _precision Unwrapping that in the calculation brings us (with the addition of parentheses where necessary to preserve the original) to: Case ( not IsEmpty ( c_score_cache ) ; Let ( [ _list = SortValues ( List ( prsn_PRSN~cross::c_score_cache ) ; 2 ) ; _pos = list.ValuePosition ( c_score_cache ; _list ; 1 ) ; _count = ValueCount ( _list ) ; _fraction = _pos / _count ] ; ( Ceiling ( _fraction / ( 1 / 7 ) ) * ( 1 / 7 ) * 7 ) ) ; "" ) Again, at this point, the behavior hasn't changed. But that straight substitution above isn't necessary. Outside the `Ceiling` call we're multiplying by 1/7 and then by 7. That's redundant. Case ( not IsEmpty ( c_score_cache ) ; Let ( [ _list = SortValues ( List ( prsn_PRSN~cross::c_score_cache ) ; 2 ) ; _pos = list.ValuePosition ( c_score_cache ; _list ; 1 ) ; _count = ValueCount ( _list ) ; _fraction = _pos / _count ] ; Ceiling ( _fraction / ( 1 / 7 ) ) ) ; "" ) At this point, it works. So my guess here is that at the end, even though everything said the field stored the value 5, it was actually something like 4.99999999... because of the division and multiplication by a number whose reciprocal wasn't easily represented in binary, or, in math ( 1 / 7 ) * 7 = 1, in FileMaker, not exactly. When I asked for the value at index 4.9999... it truncated it and gave me the value at index 4. If the client had asked for octiles instead, with 1/8 exactly representable in binary, it probably wouldn't have been a problem. I went back to the original calculation's form, but edited the math.Fractile function to round to the nearest integer before returning the result.
  27. 1 point
    I would recommend you to start with updating your Filemaker. New features will help you to find optimal and elegant solution.
  28. 1 point
    For the benefit of all, can you provide details as to whether or not there is a charge for this One on One tutoring? Has Richard done a Video on this or is he going to? TIA Lee
  29. 1 point
    LOL, Agnes. EnquireFM, I had a look at your file. Your data structure is a bit questionable to me (anytime you see field 1, field 2, field 3 notation, you question the data model). Quick answer...you can use buttons to capture values and set values. You can string values together as script parameters by concatenating them and then parsing them on the receiving side. FM 8.5!!! So many new functions and features since then that I cannot even think in 8.5 anymore. Sorry.
  30. 1 point
    Estelle, Richard Carlton Consulting offers a FileMaker Coaching program that would be perfect for this sort of thing. The way is works is you and an engineer from Richard Carlton Consulting would meet One-on-One in a screensharing session, and the engineer would walk you through Step by Step how to do this. I think that this would be an excellent option to learn how the map works, and how to recreate it. If you're interested and would like more information, email us at support@rcconsulting.com. Thanks! Jonathan Hogle
  31. 1 point
    THANKS, very nice, was about to make my own, but this is awesome
  32. 1 point
    This is what @Beverly suggested in another post: Date ( Month ( Agreement Start Date) + Agreement Period ; Day ( Agreement Start Date ); Year ( Agreement Start Date ) ) FileMaker will handle the corrections for leap years and days, too! Here is the link to that post: https://community.filemaker.com/thread/172829
  33. 1 point
    I don't think we can recommend a specific book, there are some variables we don't know, such as your skills. I would recommend that you check out the book stores near you, or go online to ecampus.com Barnes and Noble Amazon.com You can download the Sessions Material from DevCons 2017, this session https://community.filemaker.com/docs/8302 has a video here https://www.youtube.com/watch?v=8Ts9P95CbRY&feature=youtu.be that you may find helpful. I can recommend some Training Sites that offer sessions on scripting and a lot more. HTH Lee
  34. 1 point
    See if something like this could work for you: RemoveValues.fmp12
  35. 1 point
    Sliding will not work if any fields are set to align middle (vertically) and borders on lines can sometimes be a factor, also check on the layout setup and un check the boxes.
  36. 1 point
    Since going to FMS 15 (Win 2008 R2), I often get a webDirect style timeout on the admin console. I used to be able to leave it running and come back to it. Any suggestions? admin console time out.tiff
  37. 1 point
    For the most part people come to FM Forums seeking advice or assistance. If given a little thought, your topic can really engage the reader to want to assist you in finding the best answer or solution. Step 1: Choose Wisely! By first looking at the topical nature of the forums you can see there are many different forums that cover a wide range of discussions. By way of self-curating the site, try to choose a forum that covers the intent of your topic. We realize that some items cross boundaries and that is ok, just choose a forum that fits the spirit of your topic. If it's wrong a moderator will move it to a forum that best suits the conversation. Step 2: Titles, Names, & Tags Be terse but informative. With your topic title, encourage your reader to want to read your topic. Don't be needy or demanding with "please help" post titles. We realize you've hit a brick wall or may be very frustrated or have a demanding boss. But take a breath - it will be ok. Then compose a topic title that draws them in. Add a tag or two, they will appear next to the topic, it can just be a simple word or phrase that tags the post to some FileMaker-centric topic. Step 3: No Need for Apologies It is not necessary to start your post with an apology to the reader regarding where you are posting or your current understanding of a topic. We are pretty nice here and won't fault you for trying. Step 4: Prerequisite In order for your reader to provide the best response, make sure your profile has been updated with the platform and version of FileMaker that you are using. Otherwise we will assume you are using the most current versions, and the advice given may not work in older versions. If your post is specific to a version / platform / deployment please inform the reader — we don't necessarily need your computer specs, just enough background so that the reader can envision your environment. Step 5: Goals Stating your desired goals, and what you are attempting to achieve in a simple statement will aid the reader as they read further in to the details of your conversation. Step 6: What have you tried? Outline your process and steps you have taken, to get to you the point you are at. It doesn't have to be overly verbose, an essay isn't necessary. Step 7: Format for Emphasis Use the WYSIWYG editor to format text as needed to provide details. You can reference generic terms such as table::field or use your own nomenclature but if the context dictates provide the reader clarity what things may mean if they would not be apparent to someone outside your organization, or industry. this is code from a calculation bullets lists Step 8: Pictures & Sample Files Admit it, you know you miss Show & Tell from kindergarten. Re-live a past life by providing a screen image of your solution. Provide the reader information and context. Use third party tools to draw arrows on your image if needed. Can you send a clone of your solution? - If you do please make sure confidential data is removed, and your boss says it is ok. If you are modifying a commercial version of software that you have purchased — we request that you not do post a clone of these files; as that would be most likely against your terms of service. In that case you can make and post a sample file that recreates the issue you are having. Step 9: Cross Posting There are other venues on the internet that discuss FileMaker and many of our users are active participants of these resources. If you have already posted your question or topic on another site please copy the link and mention that your topic is a cross post this way others will know and may choose to review the threads and offer alternatives or not repeat a reply in both places. If you received your answer please report back here with a link to the response so that we all have a sense of closure. Step 10: A Sense of Humor Keep your sense of humor, and don't forget to smile. The site is visited by members of all skill levels, many are full time developers and consultants and generously volunteer their time and energy to the site. When the occasion calls for it give them your gratitude . A little levity never hurts. Also keep in mind that American English is not everyone's native language -- some things may not translate. If English is not your first language, just do your best. We really appreciate this! It gives us a little spring in our step.
  38. 1 point
    A drop-down list displays the value actually entered into the field -- say "12", which may be the primary key value for a related city "New York". How can you expect the drop-down field to display "New York" if it is designed to display what is entered into the field? Also, drop down lists allow the user to enter anything they like, eg 21 even if there is no related city. You're using the wrong interface element. Use an onObjectModify trigger on the pop-up menu to trigger a script that: commit records refresh window [ flush cached joins ] It will work. :D
This leaderboard is set to Los Angeles/GMT-08:00

Important Information

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