Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 09/16/2019 in all areas

  1. 1 point
    Once again, I cannot reproduce the problem from your description. Can you post a simple file that shows this behavior (and if possible, nothing else)?
  2. 1 point
    Have you tried a "freeze window" script step before the "go to layout" script step?
  3. 1 point
  4. 1 point
    OnPanelSwitch is relevant, GetLayoutObjectAttribute is not. Simply make the triggered script remember the target panel using the Get ( TriggerTargetPanel ) function. Of course, all this can be avoided if you open a new window, do whatever you need to do, then close the window to return to your previous state intact.
  5. 1 point

    Version 1.0.0

    134 downloads

    FileMaker® Server 16, introduced in April of 2017, brought with it the capability to use three oAuth2 Identity Providers to authenticate Identity Assertions made in attempts to access hosted FileMaker® Pro files. Google, Amazon, and Microsoft® Azure AD were the three Identity Providers. Since then various members of the developer community have sought ways to expand beyond those three providers to employ other Identity as a Service (IDaaS) options. Wim Decorte and I are pleased to advise that we have succeeded in an effort to expand the available Identity Provider services to additional systems. We have documented the underlying mechanism that FileMaker Server uses and have identified at least five new major IDaaS providers whose oAuth2 capabilities we can leverage to permit their use in the FileMaker Platform environment. We hope this means, among other items, that the FileMaker Platform can now be used at locations where heretofore it was disqualified due to lack of support of these Authentication options. We were aided in this endeavor to a substantial degree by assistance from Claris International, Inc. (formerly FileMaker, Inc.) working in a customer environment. This ratifies to a substantial degree the maxim postulated by well-known business author Tom Peters back in the 1970’s that “Innovation doesn’t come from the R&D Department; it comes from the customer base.”

    Free

  6. 1 point
    I am a minimalist and I don't believe in piling up code just because someone reported problems using code they did not understand. This is especially true when answering questions here on the forum: I expect the reader to understand the answer, not to copy/paste it blindly into their solution. Therefore I concentrate on the problem at hand and leave additional potential issues to side notes, if at all. Speaking of understanding: if you think that both lists must be unique, then you too don't understand how this works.
  7. 1 point
  8. 1 point
    See, we all learned something... To make things more Groovy, you don't need any semicolons at the end of lines, and in most cases you don't need the class assignments at the start for line, Groovy auto typecasts as it knows what the returned object is...
  9. 1 point
    I found the code that I had that only return the coordinates and screen size. I just add the "import" section, that is what was missing from my previous attempt. import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String boundsString = ""; for (GraphicsDevice gd : ge.getScreenDevices()) { Rectangle bounds = gd.getDefaultConfiguration().getBounds(); boundsString += bounds.x.intValue() + " " + bounds.y.intValue() + " " + bounds.width.intValue() + " " + bounds.height.intValue() + "\n" } return boundsString; and it return plain data 0 0 1920 1080 -1680 0 1680 1050 Maybe this will help someone else in the future, you have 2 options, you just have to extract the data you want from the result. JF
  10. 1 point
    If you want to populate existing records, try changing the field to a calculation field, exiting the Manage Database dialog, and then changing it back. This has the advantage of not triggering any "last modified" fields. However, it will only work if the calculation can be stored. Otherwise you would need to use Replace Field Contents to populate the field. Make sure to have a backup before you try that, as there is no undo in case you make a mistake. IMHO, it would be simpler to change the target field directly, by replacing its contents with a calculated result using the same formula as the auto-enter. But it may not be necessary at all, as explained above. Are you sure that's a good idea? You didn't say how exactly the price would be calculated. You should not hard-code a formula into the file's schema unless you are positive it can never change.
  11. 1 point
    Unfortunately, this is not as simple. Over the years, a number of approaches have been proposed, with varying levels of efficiency in different scenarios. There was an interesting thread comparing the performances, but sadly it can no longer be found - see: https://fmforums.com/topic/98609-missing-thread/ An interesting approach was suggested recently by Alex Zueiv on another forum, which I have simplified to: Let ( [ combined = UniqueValues ( List ( UsedValues ; AllValues ) ) ] ; RightValues ( combined ; ValueCount ( combined ) - ValueCount ( UsedValues ) ) ) I haven't tested this against alternative solutions.
  12. 1 point
    The issue is what you get back from Groovy and how to interpret it this is my setup I can get that there are two displays ( an array with two values at 0 and 1 ) I can get the starting position and size, but the values returned in this case show both of them as 2560*1440 BUT with a monitor2 on the right I get [0] == java.awt.Rectangle[x=2560,y=0,width=2560,height=1440] [1] == java.awt.Rectangle[x=-0,y=0,width=2560,height=1440] and with the monitor 2 dragged to the left I get [0] == java.awt.Rectangle[x=-2560,y=0,width=2560,height=1440] [1] == java.awt.Rectangle[x=-0,y=0,width=2560,height=1440] you can get these values by using this code and changing the gs[0] for gs[1] to see the differences import java.awt.GraphicsConfiguration import java.awt.GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment() gs = ge.getScreenDevices() gd = gs[0] gc = gd.getConfigurations() return gc[0].getBounds() if you use Toolkit and getScreenSize the docs say getScreenSize DimensiongetScreenSizeHeadlessException GraphicsConfiguration GraphicsDevice import java.awt.Toolkit screenSize = Toolkit.getDefaultToolkit().getScreenSize() return screenSize however as I pointed out this will not help as both displays report the same size so I have no way of inferring which one is positioned where
  13. 1 point
    How about: Let([ ~field = Filter( myField; "0123456789" ) ]; If( Length( ~field ) = 16 and Left( ~field; 4 ) & "-" & Middle( ~field; 6;4 ) & "-" & Middle( ~field; 11; 4 ) & "-" & Right( ~field; 4 ) = myField; 1; 0 ) )
  14. 1 point
    Then you can do = While ( [ lines = YourTable::YourField ; n = ValueCount ( lines ) ; i = 1 ; result = "" ] ; i ≤ n ; [ line = GetValue ( lines ; i ) ; lastWord = RightWords ( line ; 1 ) ; result = result + GetAsNumber ( lastWord ) ; i = i + 1 ] ; result ) Still, I wonder if it wouldn't be better to use records and fields. Filemaker is best at handling properly structured data.
  15. 1 point
    I wrote a custom function that does this (and a bit more). Scripting it is slightly easier - try: Set Variable [ $values; Value:YourTable::ListOfValues ] Loop Set Variable [ $i; Value:$i + 1 ] Exit Loop If [ $i > ValueCount ( $values ) ] Set Variable [ $thisValue; Value:GetValue ( $values ; $i ) ] # TEST AGAINST PREVIOUS VALUE If [ GetValue ( $values ; $i - 1 ) ≠ $thisValue - 1 # START A NEW RANGE Set Variable [ $startValue; Value:$thisValue ] End If # TEST AGAINST NEXT VALUE If [ $thisValue + 1 ≠ GetValue ( $values ; $i + 1 ) ] # END THIS RANGE Set Variable [ $result; Value:List ( $result; If ( $startValue = $thisValue ; $thisValue ; $startValue & "-" & $thisValue ) )] End If End Loop Set Field [ YourTable::Result; Substitute ( $result ; ¶ ; ", " ) ] Commit Records/Requests
  16. 1 point
    Most people here are testing with newer versions. Just to rule it out, rename the layout folder to something different and see if it works. I vaguely remember an issue with layout folder names being the same as layout names, being the reason why I never name folders the same as layouts. It may be a case where the other layouts were created prior to being stored in folders. You probably created the folder first, then the inventory layout, as that structure was already in place. It's possible the order of creation is significant. This post deals with similar issues: https://community.filemaker.com/en/s/question/0D50H00006h92UZSAY/psa-fieldnames-function-affected-by-layout-folder-names
  17. 1 point
    I think the code above should work for you, then - you only need to change $dataIN to dataIN. You could make this a bit more elegant, though - say: wDECRYPT ( input ; action ) = Case ( action = "decrypt" ; Substitute ( Lower ( input ) ; [ "b" ; "0" ] ; [ "c" ; "1" ] ; [ "d" ; "2" ] ; [ "e" ; "3" ] ; [ "f" ; "4" ] ; [ "g" ; "5" ] ; [ "h" ; "6" ] ; [ "I" ; "7" ] ; [ "j" ; "8" ] ; [ "k" ; "9" ] ; [ "m" ; "0" ] ; [ "n" ; "1" ] ; [ "o" ; "2" ] ; [ "p" ; "3" ] ; [ "q" ; "4" ] ; [ "r" ; "5" ] ; [ "s" ; "6" ] ; [ "t" ; "7" ] ; [ "u" ; "8" ] ; [ "v" ; "9" ] ) ; action = "cryptA" ; Substitute ( input ; [ "0" ; "b" ] ; [ "1" ; "c" ] ; [ "2" ; "d" ] ; [ "3" ; "e" ] ; [ "4" ; "f" ] ; [ "5" ; "g" ] ; [ "6" ; "h" ] ; [ "7" ; "I" ] ; [ "8" ; "j" ] ; [ "9" ; "k" ] ); action = "cryptL" ; Substitute ( input ; [ "0" ; "m" ] ; [ "1" ; "n" ] ; [ "2" ; "o" ] ; [ "3" ; "p" ] ; [ "4" ; "q" ] ; [ "5" ; "r" ] ; [ "6" ; "s" ] ; [ "7" ; "t" ] ; [ "8" ; "u" ] ; [ "9" ; "v" ] ) )
  18. 1 point
    In proper normalization you could even consider 3 tables: - the core table with People info - a table for Customers where the Person is just represented by a foreign key to the People table, the other attributes in the Customer table just describe customer attributes such as "customer since", or "tier" or whatever else is relevant - a table for Contacts where the person similarly is just represented by a foreign key to the People table and where you track attributes for the contact that you wouldn't track on the people table, such as "last contacted", ... or other such stuff So data normalization doesn't automatically mean having redundant data. From a security point of view it is somewhat easier and more transparent to set rights on the Customer table and Contacts table separately. Easier to maintain without possibly inadvertently also exposing other data that you don't want to.
  19. 1 point
    Try: Sum ( Onhand ; PendingOrders::sTotalQtyByWeekR[1] ; PendingOrders::sTotalQtyByWeekR[2] ; PendingOrders::sTotalQtyByWeekR[3] )
  20. 1 point
    I would start by substituting "+" and "," with ¶. Then loop over the resulting values. If the current value contains "-", create the intermediate values and add them to the result. Otherwise add the value to the result.
  21. 1 point
    If you don't have the Advanced version, you cannot use a custom function (unless someone installs it for you). And if you don't have version 18, you cannot use the While() function. That leaves us with a looping script. The attached demo shows how it could work. Note that you can use a script trigger to run the script automatically OnObjectSave. ProcessEntry.fmp12
  22. 1 point
    Actually, you only need to "deal" with the "-" operator. The "+" and the comma can be simply substituted with a carriage return to get a list that Filemaker recognizes as a list of values (assuming that's what you want as the result). Iterating from 1 to 5 and creating the intermediate values requires either a custom recursive function or the While() function or a looping script. Please update your profile to reflect your version and OS so that we know which one of these you can use. -- Note: 1. A field where a user is allowed to enter "12+82" or "1-5" or "31,33,35,37" should be a Text field. 2. You may face a difficulty if a user enters a value that does not fit one of your 4 formats listed above.
  23. 1 point
    Hold on: I've found a stupid mistake in my file. Try it again. BarcodeLookupAPI.fmp12
  24. 1 point
    Here is a short tutorial how to send Telegram message from FileMaker 16 (previous version needs to set target as field): 1. Find @BotFather from telegram 2. Send message: /newbot 1. Answer to questions (Bot name, bot username) 2. Get token (12345:AAFzdx1231sfasfddafskv_KBkARu5UdsdsfHM) 3. Find newly created bot and start conversation (/start) 4. Create a FileMaker script 1. Set variable ($cmd; "getUpdates") 2. Insert From Url 1. With dialog: off 2. Specify target as variable: $$response 3. Specify URL: "httpspost://api.telegram.org/bot12345:AAFzdx1231sfasfddafskv_KBkARu5UdsdsfHM/" & $cmd 5. Run the script and look for the $$response variable on data viewer 6. Get "id" of your user (1234567) 7. Edit the script to have variables: 1. $who; "1234567" (id of the user) 2. $text; "Hello, this was sent from FileMaker" 3. $cmd; "sendMessage?chat_id=" & $who & "&text=" & $text 8. Run the script again with new command and telegram message will be sent to you
  25. 1 point
    Apparently we just needed to restart the app and that fixed it.
  26. 1 point
    If you GTRR based upon 'match current record only' then error 101 will be produced if no related records match THIS record - error is RECORD IS MISSING saying that the FIRST parent record has no child records, even if the other parent records have children. But if you GTRR using 'match found set' then error 401 which is NO MATCHING RECORDS. So if matching 1, test for 101 but if matching many, test for 401.
  27. 1 point
    Try the OpenURL script step. click specify. the calc is: "http://www.google.com/search?hl=en&q=" & yourtable::TextField This can be done with or without dialog and you don't even need to write a script. Just create a button the uses this one script step. Oh and this should work on any OS that you can run filemaker on and wil work in FM8
  28. 1 point
    LaRetta-- I like your solution generally--except that today's Calf might be next year's Sire or Dam, in which case you'd need some way to transfer the Calf record to the Parents table, with a duplication of entries. I would probably have just the one Cows table, with fields for the Sire and Dam of a given cow. But then I'd have to figure out how to show a Cow's calves, since a bull would have to show Sired children, and a cow would have to show Dammed (Question: Aren't they all?!? heh, heh!) children. David
This leaderboard is set to Los Angeles/GMT-07:00
×
×
  • Create New...

Important Information

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