Popular Content

Showing most liked content since 04/26/2017 in Posts

  1. 3 likes
    Couldn't this be much simpler? AppleScriptSpeak.fmp12
  2. 2 likes
  3. 2 likes
    See: http://www.filemaker.com/help/16/fmp/en/#page/FMP_Help%2Fextended-privileges.html%23wwconnect_header (the last item in the table).
  4. 2 likes
    That doesn't actually help the user find the answer to his question, it answers a different one, and there are reasons for wanting this one answered.
  5. 1 like
    Not sure I follow entirely, but in your script, just before the "Show Custom Dialog" just do a Set Field [Examples::MASTER CODE ; "" ]
  6. 1 like
    to expand on that; you have this isEmpty ( Sub9First_Semester or Sub9Second_Semester) this part: Sub9First_Semester or Sub9Second_Semester will result in a boolean result; 0 or 1, so it will never be empty
  7. 1 like
    You don't. A stored value will never change on its own just because time has passed. But you can - and IMHO should - use a third field, an unstored calculation field, to display the current age, calculated from the stored age and the date the record was created as = Age + Div ( Get (CurrentDate) - DateCreated ; 365.2425 ) or, if you want it more accurately, as = Age + Year ( Get (CurrentDate) ) - Year ( DateCreated ) - ( Get (CurrentDate) < Date ( Month ( DateCreated ) ; Day ( DateCreated ) ; Year ( Get (CurrentDate) ) ) ) I believe this is the best solution for you because (a) it leaves your original data as entered, and (b) it does not modify your records spuriously when no real modification has occurred (this is specially important if you keep track of record modification dates). Keep in my mind that a yearly script has to run every year, and - no less importantly - must not run more than once in the same year. IOW, there should be a record of each run, and the script needs to check it before it acts. I don't think that's a good idea because it requires the script to run every night, with absolutely no exceptions: no weekends, no holidays, no power outages, no floods. If you miss a day, there's no record of that - and your data is skewed forever.
  8. 1 like
    For this to work, you would need to know when you entered it - for example, by having a field auto-enter the record's creation date/timestamp. Then you could have an unstored calculation field showing the current age (approximately, since you don't know the exact birthdate) . Without this, the only way to achieve what you want would be by running a script once a year to increment the stored Age values by 1.
  9. 1 like
    I get exactly where you are at. My first dive into development was taking a system from FMP 4...and reworking the workflow, and adding a ton of features. With the capabilities of the modern versions of FM, there may be some opportunities to consolidate that down into a single UI file that reaches out to the other files and uses there data. Classic separation model use-case. Good luck with whatever you decide to do, and if you need tips or have questions. You know where to find us!! lol
  10. 1 like
    I spent 8 of my 10 years developing on Windows. So I am familiar with the pain. It may just be a difference in development. I almost never have the user have more than one window open. Unless it's a temporary, comparison driven task, or a customized dialog style window. You open up a lot of record locking issues with so many windows open. Other than that, the I close windows as the user moves to something else. There are some versions of FM that are just a performance hog. If the windows the user has open are from multiple files, FM is obliged to update the cache files on the local machine for as long as they are open. So for any records that FM has touched, or thought about, or needed to calculate something, it was downloaded to the local cache. When another user updates a record you have downloaded to the cache, FMS sends that record to the local cache. That can become a very chatty network, indeed!! In addition to the performance impact. Just some thoughts. Not dismissing that it is a big change. But it is one that most users have been asking for, for a long, long time.
  11. 1 like
    "-H Authorization: ShippoToken " & $token & " -H Content-Type: application/json -d " & $json I believe above should make a valid string.
  12. 1 like
    To address the loss of the bottom toolbar during development, I have created a small toolbar which I am putting on every layout with a hide condition if [ not "Full Access" ]  As a result of reading this thread, I think I will be adding additional buttons/segments to include "Show/Hide menu bar[toggle]" and to access layout Mode
  13. 1 like
    Josh, I would guess that Adduartes issue is similar to my own. Until version 16 I have always run my database windows maximised under Microsoft Windows to avoid the mess that is two sets of window borders and,even worse, the database window half disappearing behind the application window. So the PC users are used to seeing only a single window at a time. Clearly 16 offers a whole new world of options for window management on PCs, but, initially, I would want to reproduce the former behaviour in 16 before assessing how to take best advantage of the new possibilities. One of my clients might end up with close to 20 full screen windows by the end of a day in 16 compared to a single visible window in 15. Hence my script for hiding all but the active window (I will also need to ensure that windows are lo longer maximised but adjusted to fit instead.) When I moved for PC to Mac a few years ago it took some time to get used to having so many more windows to deal with and at first it seemed very 'messy' to have so many windows and more difficult to locate the window I was looking for. My aim is to ensure the migration to FileMaker 16 is a easy as possible for users and then add any additional windows in a considered and controlled manner. Hopefully you can now understand the issues that SDI raises for some of us on PCs
  14. 1 like
    Whilst I really like the new behaviour on PCs, I too have clients for whom having multiple windows visible will be at best a confusing change and at worst - well who knows (it depends how well I programmed things in the past!) I guess you could mimic the old behaviour by hiding all windows except the one you want to be active. Perhaps a script something like this would help Script: Hide Other Windows Set Variable [ $activeWindow; Value:Get(WindowName) ] Set Variable [ $allWindows; Value:WindowNames ] Set Variable [ $iMax; Value:ValueCount ( $allWindows ) ] Set Variable [ $i; Value:1 ] #loop over all windows and close all but active window. Loop Set Variable [ $window; Value:GetValue( $allWindows ; $i ) ] If [ $window ≠ $activeWindow ] #Remember to uncheck "Current file only" for multi file solutions Select Window [ Name: $window ] Adjust Window [ Hide ] End If Exit Loop If [ Let( $i = $i + 1 ; $i > $iMax ) ] End Loop
  15. 1 like
    FileMaker's 'Open' command will work with Excel and text files -- converting them to FileMaker files in the process -- but not PDF. I believe you can fill in PDF forms using Scribe: 360works.com/filemaker-pdf-plugin/
  16. 1 like
    I move it to Managing Scripts I deleted your duplicate post. Please do not double post your questions.
  17. 1 like
    No. Try the Open URL[] script step to open a non-Filemaker file in its native application. I don't know of a way to do that natively from Filemaker. Perhaps with a plugin.
  18. 1 like
    You can email FileMaker... But as there is only little changes between the versions, you could simply go with 12 and be fine.
  19. 1 like
    I conducted a small test of my own and I can confirm that including an external stylesheet causes a failure. That's hardly surprising given what I said earlier about the XSLT being applied from memory, even with the BE_ApplyXSLT() function. Strange choice on part of the plugin's author. Yeah, well, that seems to be a separate issue that muddies the waters. The function does not return any error codes - not even a 0 in case of success.
  20. 1 like
    They are being sent out in batches. Takes a few days. Globally, we are probably talking about millions of emails. I've heard several people say they haven't gotten theirs yet.
  21. 1 like
    I can confirm there is no error message (using BE 3.3.4). However, the process itself works fine for me. Verify your paths as suggested here: https://baseelementsplugin.zendesk.com/hc/en-us/articles/205350417-Notes-about-File-Paths
  22. 1 like
    I'm assuming you are using a system script schedule on FMS? Then the script itself can only be in one location: the FMS scripts folder. If it is not there you wouldn't be able to select it when you set up the schedule. This could be a permissions issue: both on the script file itself (owner and group has to be fmserver / fmsadmin ) and the script will be executed in the context of that fmserver user. That user needs the proper rights to do what you want; which it may not have.
  23. 1 like
    For the new version, going to test it like mad in the next few days.....
  24. 1 like
    It would. Clicking a button to populate a joining date field would work even better, IMHO.
  25. 1 like
    There is no good reason to add the joining month to the actual membership number. You can easily display the joining date (formatted as MMDDDD) alongside the membership number, if it helps. Although I believe a computer would be much better at keeping track of when it's time to renew a membership than a human eyeball.
  26. 1 like
    There are 3 new extended privileges in 16 that are off by default. So you need to check them to make sure they are enabled, if needed. fmrest - Access via FileMaker Data API - FMS only fmextscriptaccess - Allow Apple events and ActiveX to perform FileMaker operations fmurlscript - Allow URLs to perform FileMaker scripts
  27. 1 like
    We have millions of records in multiple tables, being hammered on by 100 users... And processing 3-5k records at a time. Rarely takes longer than a few seconds. So I'm not sure what you mean. I'll agree, FM will let you build it so it's slow, but that doesn't mean it can't be faster. And as Jeremy said, performance increases are only beneficial to a point. There are so many variables that can make a process or script perform poorly, it's short-sighted to always blame FM for that. Sometimes, and probably more often than we would like to admit, it is the developer's fault.
  28. 1 like
    Here's another: https://www.geistinteractive.com/2017/05/09/filemaker-16-biggest-change-since-filemaker-7/
  29. 1 like
    I am guessing you are having a problem with the "ILR-99999999-1617-20160229-144401-01.xml" file. The reason for this is that all the elements in the file are in a namespace. They are put there by the default namespace declaration: xmlns="SFA/ILR/2016-17" carried by the root Message element and inherited by all it descendant elements. This means all your select expressions select nothing. In order to select an element in a namespace, you must declare the same namespace in your stylesheet, assign it a prefix (an arbitrary string), and use that prefix to address the elements in the source XML: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ilr="SFA/ILR/2016-17"> <xsl:template match="/"> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <METADATA> <FIELD NAME="LearnAimRef" TYPE="TEXT"/> <FIELD NAME="AimType" TYPE="TEXT"/> <FIELD NAME="AimSeqNumber" TYPE="TEXT"/> <FIELD NAME="LearnStartDate" TYPE="TEXT"/> <FIELD NAME="LearnPlanEndDate" TYPE="TEXT"/> <FIELD NAME="FundModel" TYPE="TEXT"/> <FIELD NAME="ProgType" TYPE="TEXT"/> </METADATA> <RESULTSET> <xsl:for-each select="/ilr:Message/ilr:Learner/ilr:LearningDelivery"> <ROW> <COL><DATA><xsl:value-of select="ilr:LearnAimRef"/></DATA></COL> <COL><DATA><xsl:value-of select="ilr:AimType"/></DATA></COL> <COL><DATA><xsl:value-of select="ilr:AimSeqNumber"/></DATA></COL> <COL><DATA><xsl:value-of select="ilr:LearnStartDate"/></DATA></COL> <COL><DATA><xsl:value-of select="ilr:LearnPlanEndDate"/></DATA></COL> <COL><DATA><xsl:value-of select="ilr:FundModel"/></DATA></COL> <COL><DATA><xsl:value-of select="ilr:ProgType"/></DATA></COL> </ROW> </xsl:for-each> </RESULTSET> </FMPXMLRESULT> </xsl:template> </xsl:stylesheet> Note that I have also deleted the: <COL><DATA><xsl:value-of select="ilr:elevation_m"/></DATA></COL> part from your attempt, because I don't see an elevation_m element in your input nor a corresponding field in the field names you have defined.
  30. 1 like
    This is cute. And completely not the case in reality. I have seen so many "professionals" try to replicate work we have done in FileMaker, and they have been ridiculously unsuccessful. I don't disagree with some of what you mentioned. There are things I would love to see done differently. But that is also the case with every other programming environment I've dabbled in. To be fully honest, they all suck in their own way. Scale? What kind of scale are you referring to? I ask because I see 2 types of people that say this ( note I'm not implying anything about you specifically, just a general observation ). (1) People who built themselves into a corner, and just set up the data model the "wrong way". For them handling a few thousand records is painful. (2) People who want to process 20 million records in a second or two. Constantly. All day. Yeah, FileMaker isn't that tool. Relatively speaking, the number of companies needing to process millions of records a day is kind of small...compared to the companies that only need to handle a few thousand to a few million records a year. So for developers, this is one tool they have in their toolbelt. And they get paid well for the work they do. That's the definition of professional. Many developers I know have more work than they can handle right now. So it's hard to agree with you on that point.
  31. 1 like
    Yes, it's perfectly possible. In fact, there are two ways you could implement this; one is to loop over the found set in Contacts and create a new join record for each, say (roughly): // REMEMBER THE SELECTED EVENT Set Variable [$eventID; Events::EventID ] // RETURN TO THE FOUND SET IN CONTACTS Go to Layout [ Contacts ] Show Custom Dialog [ ... ] If [ Get ( LastMessageChoice ) = 1 ] Go to Record [ First ] // FOR EACH CONTACT ... Loop Set Variable [ $contactID; Contacts::ContactID ] // ... CREATE A NEW JOIN RECORD Go to Layout [ EventContacts) ] New Record/Request Set Field [ EventContacts::EventID; $eventID ] Set Field [ EventContacts::ContactID; $contactID ] // RETURN TO THE FOUND SET IN CONTACTS Go to Layout [ Contacts ] Go to Record [ Next; Exit after last ] End Loop Commit Records[] End If The other option is to import the found set in Contacts into the join table (mapping ContactID to ContactID), then replace the contents of the EventID field of the imported records with the $eventID value.
  32. 1 like
    I think it would be best to start by identifying the problem. But if the field is not on the layout, then obviously you need to put it there: http://www.filemaker.com/help/10/fmp/html/create_layout.9.21.html#1028407
  33. 1 like
    Can you show the report layout in layout mode? Can you show the script the button calls? Are you sorting the report by the sub-summary part?
  34. 1 like
    Well, we can only guess. I can think of three reasons why you don't see the number: 1. The field is not on the layout (or perhaps not entirely within the Body part of the layout); 2. The field is empty; 3. The field and the layout do not belong to the same TO.
  35. 1 like
    You can use as many wildcards as you wish. They're evaluated in order, so you simply add the criteria in order. Using the wildcard rather than putting the criteria inline tends to save a lot of headaches. E.g.: ExecuteSQL ( "SELECT DISTINCT id_song FROM T26_SET_SETLISTS WHERE id_staff = ? OR id_staff = ?" ; ""; "" ; $Guitarist ; $Drummer ) I don't think this query will give you the results you're looking for, but if you're interested in going further, start here: https://filemakerhacks.com/2012/10/19/the-missing-fm-12-executesql-reference/
  36. 1 like
    But I did not suggest extending the found set. On the contrary, I suggested constraining it. So if you find the songs that STA01 knows, then constrain it to only songs that STA05 knows, you will end up with a list of songs that both know. I am well aware of that. Still, the Find should be performed in the Songs table, because you want a list of songs, and you want it without duplicates. You can easily search related fields. Here's an example of script that finds songs that both STA01 and STA05 know: Go to Layout [ Songs ] Enter Find Mode [ ] Set Field [ JoinTable::StaffID; "STA01" ] Perform Find [ ] Enter Find Mode [ ] Set Field [ JoinTable::StaffID; "STA05" ] Constrain Found Set [ ]
  37. 1 like
    No, not as a portal filter but I guess you could use like that. I would personally use the ExecuteSQL() to collect the IDs, set the IDs in a global text field as a multiline and use it to build the relationship.
  38. 1 like
    by far the easiest for you would be to use a multiline key on the left side of the relationship with the IDs of the selected staff: So return delimited list in a global text field: STA01 STA02 Relate to the STA field in the join table will give you a relationship (to use in a portal) to show the songs that they know. Now that may still show duplicate songs in there. You can solve that by using a SQL query for instance to ask for the 'DISTINCT' songs that match both staff but that's a little more advanced, let us know if you're up to working on that.
  39. 1 like
    Are the quotation marks the problem? Sent from my iPhone using Tapatalk Pro
  40. 1 like
    You should look in Filemaker's File > Manage Database… > Fields, under Type. And since you have the Advanced version, you can use the Script Debugger and the Data Viewer to see what the actual value of the variable is at script runtime, and what does the test return. Yes. And a relationship based on matching the numerical code. Note also that you need a lookup only if you want to store a copy of the looked up address. Otherwise you can just display the related address directly on your layout.
  41. 1 like
    "doesn't work" is not a good description a problem. What - if anything - actually happens? Most likely, the value of the variable is not what you think it is (esp. since you say it's "numerical" - numerical values do not have a leading zero). Anyway, it seems your task would be much better accomplished by performing a lookup from a table of 12 records, with fields for Code (a number between 1 and 12) and Address (the actual text you're trying to insert).
  42. 1 like
    Define a calculation field (result is Text) = List ( ProductName ; "All" ) and base your value list on that. You may want to prepend a space to " All", in order to force it to the top of the list.
  43. 1 like
    I'm guessing you will feel constrained by FileMaker. Maybe something like Xojo? Or R? Or just stick with Swift.
  44. 1 like
    If this description is what you mean by 'open', then: no. FM's scripting is proprietary. It does allow for running external things through plugins etc but you'd have to find one that you like to do this. I think they exist for python but not for swift. The size of it (20GB) is sorta meaningless, a better measure would the the # of records and the # of fields per table and a better understanding for us on the nature of the manipulations you'd expect to do on those records. If you have 20 million records for instance and expect sub-second summary calcs on those then FM is not the tool for you. FM does have a pretty good ODBC/JDBC and XML API. The python API you have found is a wrapper around that XML API, that one only works through FMS. xDBC works locally on a copy of FMP but the calls to it also have originate from that same machine. There is a hybrid solution for you: FM does have native support for MySQL databases. So you could keep your heavy-duty record manipulation outside of FM but still use FM as a GUI to your records. Check out the ESS feature as it is called (External SQL Sources).
  45. 1 like
    Hi Andi You can download a Free Trial of FileMaker Pro 15 here http://info2.filemaker.com/FileMaker_trial_request.html It has a time limit, but you should be able to get a feel for how it works. Check out the example files that is included HTH Lee
  46. 1 like
    That's not a Filemaker-related question. I suggest you start a new thread and post what you have so far: the source XML, your current stylesheet, and - no less importantly - the target field mapping.
  47. 1 like
    OK - I did it myself. Over a couple weekends of spare time, I wrote a few dozen scripts that interface between Filemaker and the Amazon Marketplace Web Service API. Sad to say, this is non-trivial. Amazon's documentation is poor: there are a surprising number of mistakes, misspellings, and obsolete/outdated sections. The one bright spot is the Amazon MWS Scratchpad, which provides a direct sandbox to allow testing different calls. Most of the documentation and online help is aimed at PHP & Java & Python developers; it's not too difficult to map this into Filemaker land. I wrote scripts to gather my orders from Amazon Market Place, and to send confirmations to buyers. Like most API's, there are many gotcha's. Here's a few hints, mainly to save time for others in my position. 1) A simple Filemaker WebViewer is *not* going to work, unless you do screen-scrapes from the Amazon MWS Scratchpad. 2) I used cURL to communicate with Amazon Web Service via POST. The information to be POSTed is the Amazon parameter string (which includes the hashed signature). The Monkeybread Software Filemaker functions (www.mbsplugins.eu) are just the ticket. 3) The outgoing information must be signed with a SHA256 hash. Again, this is available in the Monkeybread software functions. Use MBS("Hash.SHA256HMAC"; g_AWS_Secret_Key; g_AWS_Text_to_Sign_With_NewLines_Replaced; 1) 4) Getting the correct SHA256 signature requires very strict observance of line-feeds ... carriage return / linefeeds in OS X and Filemaker will cause a bad signature. Before making the SHA256 hash, do a complete replace so as to generate only Unix-style line-feeds. Within the "canonical parameter list" there aren't any linefeeds (but there are linefeeds before that list) 5) The Amazon API demands ISO-8601 timestamps, based on UTC. Filemaker timestamps are not ISO-8601, but there are several custom functions to generate these. The Filemaker function, get(CurrentTimeUTCMilliseconds), is very useful, but its result must be converted into ISO-8601. Notice that Amazon UTC Timestamps have a trailing "Z" ... when I did not include this, the signatures failed. 6) The Amazon API must have url encoded strings (UTF-8). So the output from the SHA256 hash must be converted to URL encoding -- again, the Monkeybread software comes through (use MBS function Text.EncodeToURL) 7) The Amazon "canonical parameter list" must be in alphabetical order, and must include all of the items listed in the documentation. 8) Errors from Amazon throttling show up in the stock XML return, but check for other errors returned by the cURL debug response. At minimum, search through both responses by doing a filemaker PatternCount (g_returned_data; "ERROR") 9) When you're notified of a new Amazon order, you must make two (or more) cURL calls to Amazon MWS: 1) first, do cURL request to "list orders", which will return all the Amazon Order Numbers (and some other info) for each order since a given date/time. 2) Then, knowing an order number, you do another cURL to get all the details for a given order. Repeat this step for every new Amazon order number. Each of these calls requires your Amazon Seller_ID, Marketplace_ID, Developer_Account_Number,_Access_Key_ID, and your AWS_Secret_Key. Each also requires a SHA-256 hash of all this information along with the "canonical parameter list" If anyone wants my actual scripts, drop a note to me (At this moment, my scripts do the all-important /orders /list orders and /get order. I'm almost finished writing a /feeds filemaker API to send confirmations. I probably won't build scripts to manage inventory or subscriptions, but once you've built a framework for the scripts, it's not difficult to expand to more functionality) Best of luck all around, -Cliff Stoll
  48. 1 like
    Try ExecuteSQL ( " SELECT COUNT ( NoteImportant__lxt ) FROM JOB WHERE CompanyName__lxt = ? " ; "" ; "" ; CompanyName__lxt ) To get this result from the context of Jobs without finding/sorting, create a summary field Count of NoteImportant__lxt and a Jobs self-join by company and display the related summary field from the self-join. As an aside: shouldn't you have (and use) a company ID foreign key in Jobs, rather than the name?
  49. 1 like
    BE AWARE THAT THIS TECHNIQUE MAY NOT WORK IN FILEMAKER 7. It relies on repeating container fields displaying images without a gap. Not possible anymore with FileMaker's new graphic engine without major workarounds.. But they may fix this in the future. One workaround involves working in 400% scale, then copying the result in preview. See the EAN 13 example. You may want to copy the container field and offset it a half pixel. Due to variable length this is not always possible with Code39 strings.Get one of the free fonts (google: 'code39.ttf' ) available on the internet. They work on OS x now without mods.
  50. 1 like
    Here is a working version of the EAN-13 barcode example. There was an error in the divider bar calculation. To see how to implement this code in existing solutions, see the upcoming UPC-A example in this Forum. Since the solutions are working now, I will delete all intermediate uploads. CodeEAN13new.zip
This leaderboard is set to Los Angeles/GMT-07:00