Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 05/18/2023 in all areas

  1. Actually, there is a way to measure it - but it takes quite a lot of work... MeasureBeforeDisplay.fmp12
    4 points
  2. @LaRetta shared this sample file with me @comment and I really liked the concept so I played around with it a little. I was able to accomplish the same result with a single layout, which means I'd be more likely to use this technique myself. I also added layout objects so I could measure the various part sizes rather than having to keep a layout size and script config in sync; this is optional and only my preference for maintenance reasons, though. @IlliaFM Since you just mentioned a footer, I added that to my sample file as well. If you try to use my alternate implementation of this technique, be aware there are two fields layered on top of each other that probably only look like one field at a glance. This doesn't solve the other issues @comment just mentioned, though. MeasureBeforeDisplayDS.fmp12
    3 points
  3. Here are just 2 ideas that spring to mind: Let ( [ lastChar = Right ( Trim ( text ) ; 1 ) ; lastPos = Position ( text ; lastChar ; Length ( text ) ; -1 ) ] ; Left ( text ; lastPos ) ) or: Let ( tmp = Trim ( "a" & text ) ; Replace ( tmp ; 1 ; 1 ; "" ) )
    2 points
  4. I see no difficulty in going to the related table and creating the records there. Sometimes it is easier to use a relationship, but the difference is minute, not "infinite". If there is a need to show a portal based on the same relationship, I would much rather add a few steps to the script than muck around hiding the objects in the portal.
    2 points
  5. Confusion is caused by the way iPhone works. All apps operate within a closed garden or sandbox which means that FMGo has its own secure directory where it keeps everything it needs. That includes a place to store all your files which it calls "On my iPhone". Likewise there's a separate app on the iPhone called "Files". The confusion is caused by "Files" having within its own sandbox, a place where it also stores local files. It's also called "On my iPhone"! That means you could have the same-named file in both places, and think they're the same - but they aren't. When you open a file in FMGo it opens it from it's own sandbox and saves it there too. It has nothing to do with the "Files" app. As an aside, if you use Airdrop to transfer a file from your computer to your phone there's an unfortunate behaviour happening (it seems to me to be a new thing in a recent iOS update). That is the file ends up somewhere within the "Files" app! From there you have to (share) send a copy of it across to FMGo. And then remember to delete the first one in the Downloads folder of "Files" Very cumbersome to put it mildly! Ralph
    2 points
  6. I am a little confused by your description. Perhaps something like the attached demo could work for you. Note that this depends on dates being entered in consistent manner: if your date format includes leading zeros for day and/or month, then you must make sure the event dates are also entered with leading zeros, otherwise the comparison with the repeating calculation field may fail. If you are always entering your dates using a drop-down calendar, you should have no problems. If not, you may want to add an auto-entered formula to correct user entry. MonthDaysR.fmp12
    2 points
  7. You can construct the calculation along the lines of: List ( "image:Photos/" & ArtistName & ".jpg" ; "image:Photos/" & ArtistName & ".png" ) This will create both paths as a return-separated list. The container field will then go over this list and display the first image it can find.
    1 point
  8. Like this - although I think Michael is right about his calc's sansrepeaters.fmp12
    1 point
  9. It seems to me that it is the field that has the purple color, not the portal row? If so, you could apply conditional formatting to it, using [Value is] [empty] as the condition. --- This has nothing to do with the portal row being active or not.
    1 point
  10. We have nothing to base an answer upon. Are you sure you performed a find on the current layout in the current window during the current session? Perhaps Constrain Found Set would be a better choice for this purpose. https://help.claris.com/en/pro-help/content/constrain-found-set.html
    1 point
  11. The ORDER BY clause should come at the very end. But there is a problem here: The sort will be applied to the entire result - including the "Total" line produced by the 2nd SELECT statement. If it starts with a ¶, it will be sorted to the top. If it starts with a "T", it will come before "Vision". You could try and prepend a control character to force it to be the last - for example, this seems to work in my test: ExecuteSQL ( "SELECT Department, COUNT (*) FROM Staff WHERE Status = 'Active' GROUP BY Department UNION SELECT CHR(127) + '¶Total', COUNT (*) FROM Staff WHERE Status = 'Active' ORDER BY 1" ; Char (9) ; "" ) However, I would rather make 2 separate calls to the ExecuteSQL() function and combine the result using the FMP calculation engine. And of course, if you can produce the same result using a FMP native report, that's always preferable.
    1 point
  12. Without knowing exactly what you did, we can only guess. I don't like guessing. Take apart the attached demo file and see if you can spot what's missing in yours. OnPanelSwitch.fmp12
    1 point
  13. I am afraid I don't know. I would try removing some or all of the top 3 options, but that's just blind groping. If you cannot make it work through the native Insert from URL step, try the BaseElements plugin: https://docs.baseelementsplugin.com/article/517-behttppost
    1 point
  14. Hm, what a strange thing indeed. I have never seen such thing, and I would have to run another test or two to be sure, but this is my preliminary diagnosis: Your values are very long, and some of them are identical to others except for a few words at the end. For example, the values under General and Transmission are identical for the first 767 characters. Filemaker indexes only the first ~100 characters. If you look at the field's index, you will see that there are only 3 entries that start with "(COVID 19" - although there are 8 such values. So what probably happens is that when you select Transmission, the correct value is entered into the field - but when Filemaker looks for the corresponding label, it finds General and attaches a check mark to that. I would suggest you use IDs as the values to enter into the field and use a relationship to get the long descriptions. Or (if possible) make sure that the differences between the descriptions occur within the first 100 characters.
    1 point
  15. I would prefer to see two files with identical data, so that the only differences are in the format structure. Still, one difference is obvious and it is also what I suspected: the file produced by exporting uses carriage returns as line endings; while the file produced by writing to a data file uses line feeds. This is also confirmed by what the help says: https://help.claris.com/en/pro-help/content/comma-separated-text-format.html https://help.claris.com/en/pro-help/content/write-to-data-file.html IMHO, the simplest way to produce the wanted file is to export the records as CSV, then read the resulting file as data file, change the line endings, and write the result back to the exported file. You can also add the header at the same time. Attached is a demo file that does all of that. Do note that the data stored in the database is not modified in any way during this process. There is no need to remove the commas, since the exported fields are automatically quoted. And even if there were such requirement, it would be performed on the exported data only, not on the original as you were attempting to do at the beginning. That would be just wrong. Similarly, there is no need to have the header text, stored or calculated, inside the source table. If it's a custom header, it can be stored in the script. If it's alright to use the actual field names, you can export as .mer instead of .csv. ChangeLineEndings.fmp12
    1 point
  16. until
    Mark your calendars: Rendez-Vous::FM are coming up... 📆 Friday May 31 - Saturday June 1, 2024 - NANTES Program : - FileMaker technical sessions for all levels - topos with practical applications - round-table discussions - convivial dinner - iodized air and the scent of spring... The French-speaking community of Claris FileMaker developers is looking forward to two days of conferences, discussions and convivial moments, under the aegis of @AUFMF. We look forward to seeing many of you there! For more information: www.rendez-vous-fm.fr - Online booking - Detailed program - Practical info - Discounts at partner hotels --- A vos agendas : les Rendez-Vous::FM arrivent… 📆 Vendredi 31 mai - Samedi 1er juin 2024 - NANTES Au programme : • sessions techniques tous niveaux sur FileMaker • topos avec mises en application concrètes • tables rondes • dîner convivial • air iodé et parfum de printemps… La communauté des développeurs francophones de Claris FileMaker aura le plaisir de se retrouver pour deux journées de conférences, de discussions et de moments conviviaux, sous l'égide de l'@AUFMF Nous espérons vous y retrouver nombreuses, nombreux ! Toutes informations sur : www.rendez-vous-fm.fr Réservation en ligne Programme détaillé Infos pratiques Réductions auprès des hôtels partenaires Ouvrir boîte dial. person. [ "A bientôt" ]
    1 point
  17. Why the "but"? Where is the contradiction to my suggestion?? You could do it that way. I would prefer to do it without adding the extra relationship. OTOH, I like the idea of sorting and counting the constrained found set. That could eliminate the need for the summary field I suggested. However, it has a side effect of losing the original found set in the process. This is probably not a big deal when the find criteria is only the current date - but it could be a problem in other scenarios. So it might be better to open yet another new window before starting the loop.
    1 point
  18. The size of A4 is 21 x 29.7 cm. If you want your layout to fit fully into A4, then set its size to 21 x 29.7 cm and its margins (in Layout Setup -> Printing) to 0. Then choose the A4 paper size in Page Setup. With these settings, when you Save/Send Records as PDF, you'll get the full size of the A4 format, with no margins (see the attached example). However, the result may be different when you print to an actual printer (real or virtual). That's why you get a warning when you adjust layout margins to 0. A4.pdf
    1 point
  19. This year looks great for all FileMaker developers as we get plenty of places to get together. Make connections, learn what's new and best practice, and chat about your beloved development tool. The conferences are your chance to leave your working desc and travel around the world to visit the various places the conferences happen. Meet new people each time as well as old friends. Especially if you speak English, you have seven choices. Although not yet announced, we got notice that there will be another EngageU conference towards the end of the year. FileMaker conferences in 2024: Event Language Date Where Links Claris Engage USA English 6th to 8th February 2024 Austin, Texas claris.com FileMaker en Valencia Spanish 22nd to 23rd March 2024 Valencia, Spain codewave.es Build Grow Learn English 15th to 17th April 2024 Greenville, USA buildgrowlearn.com dotfmp.berlin English 6th to 8th June 2024 Berlin, Germany dotfmp.berlin CQDF French 18th to 19th June 2024 Montreal, Canada cqdf.ca Reconnect.fm English 5th to 6th September 2024 Brisbane, Australia reconnect.fm FileMaker Konferenz German 1st to 4th October 2024 Malbun, Liechtenstein filemaker-konferenz.com Rome FileMaker Week English/Italian 8th to 12th October 2024 Roma, Italia romefilemakerweek.com Pause on Error English 8th to 11th October 2024 Clayton, USA pauseonerror.com EngageU English November? 2024 Sweden? engageu.eu We hope the dates are correct. Let us know if you see a mistake. Year round we keep a list of all conferences and in-person events on our website.
    1 point
  20. https://www.filemaker-barcode-creator.com
    1 point
  21. Comment have already given you some healthy pointers, but there is another matter, of some concern ... never use human entered fields as link, a tiny typo - breaks the linking immediately and I agree that the repeating field is a bad substitute for a dedicated join table. That's not a genuine concern, values can be ushered in actually from several realtional links away! --sd
    1 point
  22. Hardly, and definitely not the classic filemaker'ish way to do it, is the task here to find and count all records which have option W11 chosen, regardless parenting? --sd
    1 point
  23. Oh no, please! That would be even worse than the proposed "tunnel vision" type of field, where you need to hold an arrow key in order to scan a person's name. I don't know which "developer's wishlists" this has been on "for nearly 20 years" - it is certainly not on mine. I believe a person's name should always be displayed in full. This is not difficult to accomplish efficiently with merged fields. And for data entry, you can provide a popover where the field is big enough to comfortably enter even "Wolfeschlegelsteinhausenbergerdorff" (look it up, it's a thing).
    1 point
  24. Hi Lamine, In order to use plugins in Web Direct, they need to be installed in the FileMaker Server web publishing engine. Note that this is a different location than use with scheduled scripts and perform script on server. First you will need to make sure to enable Web Publishing Engine plugin in the FMS admin console. This is at Connectors->Plugins. Next install the plugin in the web publishing engine by placing the Email.fmplugin file found in the download of the plugin into the installation location. On Mac the default location is Macintosh HD/Library/FileMaker Server/Web Publishing/publishing-engine/cwpc/Plugins Once installed you will need to restart the WPE. You can do this by opening Terminal on the FMS machine and running the command fmsadmin restart wpe -y
    1 point
  25. Does the plugin have an installer for the serverside of the matter? If psos'ing shouldn't there be any plugin instance present on each workstation approaching the solution. This license can be used with FileMaker Pro for an unlimited number of users within a single organization. It also allows the software to be deployed on a SINGLE server within that organization for tasks including web publishing, scheduled scripts, and Perform Script on Server.
    1 point
  26. First you said List view, now you say Table view. In any case, I am not able to reproduce the claimed behavior in your file. And if you say you see it my file too, then it's probably something in your system. Or you are doing something extra you're not telling us about (I would certainly prefer knowing whether the problem occurs in a file you did not create or modify - that's why I posted mine to begin with). FWIW, I am testing this in version 18. Still, I believe that if there were such an obvious bug in v.20, we would have heard about it by now.
    1 point
  27. Your question is not very clear. What would be the purpose of marking those records? After all, they are already "marked" by being in the found set. Speaking in general, there are two ways to mark a record: permanently and temporarily. The permanent way is the one you mentioned: setting a "flag" field in the record itself. This necessitates modifying the actual record, and the resulting marker is in force for all users - so probably not suitable for marking records in a temporary found set of a particular user. Note also that this can fail if another user is editing a record that needs to be marked or cleared. The other method would populate a global field or variable with a list of IDs of all the records that should be marked (for the current found set, you could do this by looping or by using a summary field) and a calculation that checks if the current record's ID is in the list. This would be good for the duration of the current session - but you could store the list in the user's record and recall it at their next login.
    1 point
  28. Assuming the path field holds a valid macOS path to the file, try either one of these: • Calculated AppleScript: "tell application \"Finder\"¶ activate¶ reveal file \"" & YourTable::Pathfield & "\"¶ end tell" • Native AppleScript: set myFile to cell "Pathfield" of current record tell application "Finder" activate reveal file myFile end tell I believe this variant requires enabling the fmextscriptaccess extended privilege.
    1 point
  29. Hi Stephen, I also replied in our ticket system - in case you didn't get it, this section of the docs has some tips on reducing disk usage: http://docs.360works.com/index.php/MirrorSync_6_advanced_topics#Disk_space_usage --Jesse Barnum
    1 point
  30. The problem with your question is how to define "consecutive". If it means consecutive within the current found set and sort order, then you can use the GetNthRecord() function to get the value from the previous/next record - say something like: Yourfield & " " & GetNthRecord ( Yourfield ; Get ( RecordNumber ) + 1 ) If you're looking for a permanent order that does not depend on the current found set and sort order, then you will need to construct a relationship whereby each record is related to the previous/next record - for example, by adding 1 to a serial number and using it to match the next record.
    1 point
  31. I am still confused regarding your specification. You started by saying: To me that means you will always want to have 5 rows, and as many columns as it takes. The problem with this is that a table must be written row-by-row. You cannot fill out a column first, then move to the next column, and so on. So in order to display the values down-first, you need to write them in different order than they appear in the given list. And - as I said - the number of columns will be determined dynamically. What you have done in your 2nd calculation is cheating: you have hard-coded 3 values in each row - but there could be only 2 (if you have 6 to 10 values) or as many as 20 (if you have 100 values). To do this correctly, you would have to use another While() function to generate a row. This is much more complicated than across-first, where the number of columns is fixed, and the number of rows is determined dynamically. And that's in addition to the display issue I mentioned earlier.
    1 point
  32. Proof+Geist is excited to participate in Claris Engage 2024, where our eight speakers will lead sessions covering foundational FM techniques and dig into exploratory topics. We can’t wait to share our tips, tricks, and techniques with you! Advanced modern Claris FileMaker transactions Barbara Cooney & Alo Torres-Navarro Whether you have implemented a transactional framework or […] The post Proof+Geist speakers and sessions at Claris Engage 2024 appeared first on Proof+Geist. View the full article
    1 point
  33. I am not able to reproduce this behavior. If you put the list in a global field, you can then use a relationship matching the global to the primary key to go to related records. I am not sure what exactly you are doing (and why), but perhaps you could simply open a new window before performing a new find? Then you will be able to return to the previous found set just by closing the new window.
    1 point
  34. I cannot find my way in your file. I am attaching my test file, where I have replicated the data from your record #11. The results I am getting are indeed different from yours. You will have to find the difference between the two files yourself. RangeOverlap.fmp12
    1 point
  35. I think you may not be aware of how server-side scripts work. Each such script is run in its own session, having its own context. A script like the one you posted, that does nothing except establish a context, accomplishes nothing as far as the client calling it is concerned - see: https://help.claris.com/en/pro-help/content/running-scripts-on-server.html Judging from the comments, I suppose what you actually want to do here is to make the script to run at the specified interval on the client machine: https://help.claris.com/en/pro-help/content/install-ontimer-script.html. Although I am not sure your users will appreciate being taken off the current record.
    1 point
  36. Layouts do not filter records. If you want to see records of a specific type only, you must perform a find (you can do this automatically by using a OnLayoutEnter script trigger). Or use a portal.
    1 point
  37. What is the data type of those fields? If you have both a Text field and a Number field enabled for Quick Find, then searching for "123abc" will find records where the Text field contains a word that starts with "123abc" OR the Number field contains the value of 123.
    1 point
  38. I would prefer to see the actual text in the field, instead of rendered in a browser. It seems like you have some special characters in there, like non-breaking spaces? Anyway, assuming you are doing this in a script, try something like this: Set an $address variable to: Let ( [ line3 = GetValue ( Messages::Body ; 3 ) ; start = Position ( line3 ; "at" ; 1 ; 1 ) + 3 ; end = Position ( line3 ; "," ; start ; 1 ) ] ; Middle ( line3 ; start ; end - start ) ) Now you should have "700 DARLINGTON AVENUE" in the variable, and the question becomes how to separate the house number from the street name. Ostensibly you could set the AddressNumber field to: LeftWords ( $address ; 1 ) and the AddressStreet to: RightWords ( $address ; WordCount ( $address ) -1 ) However, this will fail if the house number is more than one word, for example "15/A Maple Street" - and I am not sure how to reliably test for such thing. Perhaps we should assume that the first space in the address separates between the two? But again, we would have to be sure exactly what kind of space it is. (On the same note: I wanted to use " at " as the searchString for the start variable but it failed because of the spaces; I don't know what other call types you might have, and as it is now it will fail if any of them contains the string "at".)
    1 point
  39. That makes it more difficult, since you cannot use the UniqueValues() function. See if the attached demo makes sense. In the real implementation, the value list would be defined to use values from the Customers table, of course. And the body part of the report would be removed (I kept it in just to check that the results are correct). Likewise the sub-sorting by CustomerID. You could probably do something similar with ExecuteSQL(), but then you would have to think how to present the result. CountUniqueInGroup.fmp12
    1 point
  40. If a field (or any other layout object) is not repeated in every portal row, then the field is not inside the first row of the portal. You can verify this by looking at the Objects tab of Layout mode. Sometimes it's necessary to nudge the object up and down to get it to "slip" inside the portal. As for the value being "completely incorrect", that's probably because your portal is sorted and/or filtered - so that the record shown in the first portal row is not the first related record in the order of the relationship.
    1 point
  41. Hi All, Some of you look to have already received this response from us but I want to post it so anyone else looking for answers/more information will have it. Please direct any further inquires to [email protected] as that is where we will be checking for issues first:
    1 point
  42. In the logistics company solution that I support, each Job has two addresses (pickup/delivery). JobAddresses are then assigned to a Route (allowing for a pickup on one day by Truck1 and delivery a different day, different truck). Adding an jobaddress to a job optionally links that address to a customer. We’ve also decided to optionally save the jobaddress as an Address. Often, we’ve found that not all delivery addresses or pickup addresses need to be either linked to a customer or even saved to the master Address table. They are a one time thing and a jobaddress is all that’s needed. route->jobaddress <-Job<-Customer There is also a separate relationship for each Job to JobObjects, the things either delivered or picked up on a route.
    1 point
  43. It sounds like you should have: where Contacts is a single table with multiple occurrences on the relationships graph.
    1 point
  44. Please don't say that. My clients could see it and take it seriously... 🙂
    1 point
  45. Side note: if you have global fields in the AppPrefs table, then there is no need for the global variables (and vice versa). Now, for the auto-enter, you could try something like: If ( AppPrefs::G_IsUsingExt = "Yes" ; AppPrefs::G_ExtStart & Self ; "" ) and for the validation: Length ( Self ) = G_UserDigits + 1 or AppPrefs::G_IsUsingExt = "No" However, this has a some potential flaws, most notably this: when editing the field, the user must remove the auto-entered starting digit, otherwise it will be inserted again before the existing one. Overall, it seems that there should be a simpler approach to accomplish whatever this is supposed to accomplish. For example, the starting digit could be taken directly from the global field (or variable), with no need to copy it into the user-entered field.
    1 point
  46. I am not sure you interpret the linked answer correctly. The help states: That means the Print toolbar button will execute your custom menu item only if your custom menu item is based on the existing Print command: --- P.S. Please type your replies outside of the quote box.
    1 point
  47. I don't have enough experience with custom menus to answer that part of your question. To open a (non-Filemaker) file in its native application, you can use the Open URL script step. Note that the supplied path must be a URL path - typically in the form of file:///directory/filename.
    1 point
  48. If you need this only in a report produced from the child table, then you could define the calculation field in the child table as: GetNthRecord ( Date ; Get ( RecordNumber ) + 1 ) and place it in leading sub-summary by parent part. This would work the same way, provided that all child records of the parent are in the found set and sorted in chronological order. But if you want to use it in both layouts, then the original suggestion is a better one.
    1 point
  49. Hello djjaz, comment is correct. The issue is that there is more than one preference record created in the preferences table. To fix this error, you will need to delete all but one of the existing preference records. The error message should no longer show up after that. If you have any other questions, please leave them here, or email us directly at [email protected] Thanks, Jonathan Hogle RCC Lead Engineer - Project Manager of FM Starting Point
    1 point
  50. Expanding on this...you may feel that a Contact can serve in more than one role. So, create a ContactRole table. This will allow you to assign a contact to several role types. For example, Bob is a "Developer" and "Business Analyst" and "Testor," he'd have three records in ContactRole. ContactRole is the roles a person may perform on a Project (that is, those for which he's qualified). ContactLink (I would name this join table ContactProj) stores the role the contact is actually performing on the Project.
    1 point
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.