Jump to content

LaRetta

Members
  • Content count

    10,871
  • Joined

  • Last visited

  • Days Won

    136

LaRetta last won the day on July 24

LaRetta had the most liked content!

Community Reputation

478 Excellent

5 Followers

About LaRetta

  • Rank
    Lifelong FM Student

Profile Information

  • Title
    Developer
  • Industry
    Software
  • Gender
    Not Telling
  • Location
    Everywhere

FileMaker Experience

  • Skill Level
  • FM Application
    16 Advanced

Platform Environment

  • OS Platform
    Mac
  • OS Version
    El Capitan
  1. Hide Empty Portal

    Hi Mike, IsEmpty() was designed for this purpose so we use it. It is also more clear. IsEmpty() is a boolean test so yes, adding a 'not' at the beginning would reverse the result. Without the help of others on this forum, I can't imagine how less competent I would be as well! :-) Nope, I will not. Asking questions is a wonderful trait.
  2. Hide Empty Portal

    Hi Mike, you can also just wrap it with IsEmpty() which is what I suggest you do. Using =" " isn't the best choice. So try: IsEmpty ( GetLayoutObjectAttribute ( "PKinPickClientPortal" ; "content" ) )
  3. So close - one piece of portal puzzle missing

    Aleesha, I just want to be sure you understand this point: It does NOT create records in the Activity table but only in the Affiliates table which appears in that Affiliates portal. It only displays on the Activity layout because they are now related. So, if you are on Activities and you want a unique list of the last time you saw Elsa even if it was on ANOTHER Activity other than the current one currently being viewed? Is THIS what you want displayed in that portal? Hey, don't get discouraged, this isn't the easiest form of communication. We'll get there. :-)
  4. Printing in different orientations

    Create two scripts: Name: Print: Portrait Print Setup [ Restore ; Dialog Off ] ... and set the orientation to portrait Repeat with Print: Landscape Then use script trigger attached to the layout ( Layout> Layout Setup > Triggers tab and select the script as a trigger to the OnLayoutEnter. Now it will automatically switch to the correct orientation.
  5. So close - one piece of portal puzzle missing

    I also want to explain that you saw the 3 because you didn't have a popup list attached to the field. Popups insert the ID but DISPLAY the name. If you re-select the 3 and select Elisha, it will correctly display, same with the others - re-select them.
  6. So close - one piece of portal puzzle missing

    Here is how we force refresh. Script trigger attached to the Affiliations::ActivityID field that, when modified refreshes the lower portal. Notice that I object named the lower portal. This makes it update immediately. People and Activities_MOD2.fmp12 We cross posted. Please stand by while I review your file. :-) ---- after reviewing ---- In Activities, Person portal ... the first two records were inserting the person's NAME into the personID field. Go to your Affiliations table and check it. Delete those two records. It should insert the ContactID not name. To know, create a value list named People. Base it values based upon field, People and select ContactID in the left pane and full name in right pane. Below, specify display all values. Just duplicate how I set up the Activity value list. Then go to your Activity table person portal and on the ContactID, change it to use popup based upon the new People value list. By the way, it is simpler if you name the table the same as its primary ID, in this case 'Contacts' or rename the ContactID to PersonID.
  7. So close - one piece of portal puzzle missing

    I should also mention, Aleesha, that sometimes we use script triggers to force a refresh if a portal really needs to display immediately but it depends upon what you're doing because if you are adding multiple Affiliate records, the lower Activities portal will update once you move on. You will also want to probably show scroll bar on the portals.
  8. So close - one piece of portal puzzle missing

    Well, that's what the Affiliations table does. You must tell the computer that 'this Contact wants to attend a certain Activity so you select the Activity. One the relationships knows the ContactID and the ActivityID for the Affiliations table, you're set to go. Committing the record is necessary for the Activity relationship to 'see' the new Affiliations record. The People::ContactID is related to the Affiliations::ContactID so when you create an Affiliation record, the ContactID is automatically inserted into Affiliations to assist in the relationship. But it still needs to know which Activity and when you choose the Activity in the Affiliations table, the Affiliations record isn't REAL to the Activities relationship until you commit or exit the portal. But if you are displaying the Affiliations portal, why do you need to also display the unique Activities portal? That lower Activities portal will never display an Activity record that the current person isn't a member of. Asking questions is always okay here, Aleesha. :-) Are you actually looking for a way of displaying ALL ACTIVITIES in a portal, even ones the person does not belong in? I guess I should have asked you for the specific purpose first.
  9. So close - one piece of portal puzzle missing

    The table below is the Activities table. When you select the Activity in the upper Affiliates table, it inserts both the ContactID and the ActivityID into the Affiliates table. Since the Affiliates table is linked to Activities, that relationship (for that Contact) is now complete and the unique Activity will now automatically appear in the lower Activities portal. You will have to commit the record (click outside the portal or into another field) to see it appear below. A global field's value is the same for every record in the table so if you typed a 1, ALL Contacts would then have ContactID 1 which isn't what you want. Global fields can be accessed from any other table without a relationship and they are handy mostly for Developer work but for real data, you want to use stored values. In the case of ContactID, you need a unique serial for every Contact record so you can tell one from the other.
  10. So close - one piece of portal puzzle missing

    You had browse mode unchecked on the ActivityID field in the portal so you couldn't create the new record. But it's also important that ContactID not be global. :-) I originally thought you wanted a portal showing only the unique Activities, which is why I gave you both. :-)
  11. So close - one piece of portal puzzle missing

    Hi Aleesha, Your Lookup layout is actually your Contact layout. It would be where you list Contact data and display a portal to Affiliations and add an Activity to the Contact. BTW, you had ContactID set as a global field which won't work so I changed it back to regular auto-enter serial number. So now you can add Contacts to the join table. Below that, I placed a portal to Activities which lists only the activity they attended. This portal might or might not be needed but if you wish for a unique list of Activities they attended, then you can use it that way. Turn off entry to fields in Activity and do not check 'allow creation' into the Activity table. Notice I created a value list of Activities (the ID and also displaying the description) to make selecting an Activity easier. People and Activities_MOD.fmp12
  12. Filemaker project structure

    Hi John, welcome to FMForums! It is feasible to use two files, one called the UI (which holds all the layouts and scripts) and the second file holding the data itself. Search here for 'Separation Model' for many discussions on it. I suppose one could use different UI modules files (an Invoice UI, a Contacts UI etc) but that seems overkill since these modules must interact via scripting and jumping from one file to another adds complexity and cost. All modules can reside in single UI file and be displayed for different customers according to whether they have rights. Secondly, separating customers into different data files might be necessary but only if each Customer possesses their data file legally such as customers which are actually Cities or if the size of each City's data file is in the GB size. Normally, your customers would reside in the same data tables but each record would be designated with different CustomerIDs and you would use a Customer table to hold their information. You haven't yet indicated your FM version. If 16, a new feature is the ability to specify the external file reference via global variable which adds great flexibility The added bonus of separate UI is ease of design because changes can be made independently on the UI and then you simply replace the served UI. Of course if you add fields, you'll need to track those changes and be meticulous in making those changes in same sequence in the data file but most work, after a solution is functioning, are layout/script based. As Comment asks, it would help to have more information on your set-up and your relationship to these 'customers.'
  13. Deleting Found Records

    One possibility ... Go to your layout with zero records Perform your find Open a new window Perform Delete All Records Close your window This should leave you with your 0 record state. Of course it still fetches those needless records but at least you've back to 0. I suppose you could instead Show Omitted so I doubt this will help.
  14. Import Excel not working

    Welcome to the world of knowledge based upon the input of others. This is why Stephen's FMForums is so powerful. I too have learned far more from these forums than any FM Help manual and I am beholding to the folks here. And that is why I, like others, give back here to assist with questions every chance I get, and still can't rate myself an expert. I will NEVER be an expert particularly since FM functionality changes version to version. If I EVER admitted I was an expert, it would be boxing myself in from future improvement. Smugness and ego is a dead-end and has no place in FMForums. Most folks here only want to help.
  15. Import Excel not working

    Indeed, Mike. I should add that Comment isn't really guessing (even though he says he is) ... he is deducing and nobody does it better than Comment.
×

Important Information

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