First of all, a portal is very similar to a subform or subreport in access. You just rely on a relationship defined in Manage | Database | Relationships to link the current record to the related portal records instead of using a SQL expression.
Let's say you have an invoice table and you want to display a list of related line items records in a portal on the invoice.
- Define an auto-entered serial number, InvoiceID, in the invoices table.
- Define a number field, InvoiceID, in the LineItems table.
- In Manage | Database | Relationships, drag from Inovices::InvoiceID to LineItems::InvoiceID to link them. (This is bit similar to a Join clause in SQL, but done with lines and boxes.)
- Doubleclick this line that now links your boxe to bring up a dialog and click the "allow creation of records via this relationship" option for LineItems.
- Click Ok to dismiss Manage | Database and apply your changes
- On your Invoices layout (think access form), enter layout mode and click the portal tool in the status area at the top of your screen.
- Draw a rectangle where you want your portal.
- A portal setup dialog appears. Select LineItems in the Show records from drop down.
- Select any other options for your portal that you want and click OK.
- In the next dialog, select the fields that you want to be visible in the lineitems portal. Do not select the InvoicesID field unless you just want to see what happens to it when you create new records in the portal.
- Return to browse mode. Create an invoice record if you don't already have one. Now start entering data in the bottom blank row of the portal. Due to the "allow creation" option we selected earlier, entering data in this bottom row automatically creates a related record in LineItems, entering the InvoiceID value of the current invoice record into the matching InvoiceID field in the new LineItems record.
That should get you started. There's more information about portals in filemaker help, the Invoice starter solution that comes with filemaker 11 follows this pattern and you are welcome to post back here with specific questions here as needed.
I have two layouts/tables - authentication and notices
I want the user to be able to enter notes or notices into the "notice" table and show them scrolling 2 at a time showing in the "authentication" table.
I followed your instructions and nothing...I swear i know whatever I am doing wrong is right in front of my face and I am missing it.
"nothing" isn't something I can help you with. Can you be more specific?
What do you see on the screen?
What do you have set up in Manage | Database | Relationships?
You can also post a copy of your file to a file sharing site and post the link to your file here for me and others to download and take a look at. You can use the clone options in Save a copy as.. if you have data in your file that is sensitive as this produces an empty copy of your file for your upload.
Actually the design is sensative so I made a small example file so hopefully you can show me what I am not seeing or what I am doing wrong. Again, thank you so very much for trying to help me out here. =)
Frustrating part is if they had wanted this designed with PHP/mySQL I could have had it halfway completed by now, but I am very familiar with those tools. However, this is the media they wish to have the solution designed in...I figured "Eh, it's a relational database system, I work with MS Access and mySQL all the time so how hard could it be..." LOL
I only had to do two things to get it to work. In manage | Databaes | Relationships, I enabled "Allow creation of records via this relationship" for Notices instead of Authentication. Then I created a new record in Authentication and I could enter text in the portal.
Then perhaps what I need is a repeating field. What I want the user to be able to do is enter text on the notices page, and the notices all just show up on the authentication page. Am I wrong in using a portal?
That did help me understand portals MUCH better now though.
You see I want an admin to be able to enter notices on a backend (notice layout) that will just show up on the authentication layout...not editable from authentication layout.
I don't follow that. The notices do show up if they are related to the current authentication record--just like a subform in access. What do you mean by "all just show up". Do you want to see all notices for regardless of which authentication record you are on? That can be done.
A repeating field isn't a good option. In current filemaker versions, repeating fields should be limited to certain specialty applications.
I want just a little box like you see in the sample that a user can scroll through on the authentication layout and see ALL the notices. So if the admin entered 20 notices they will be able to scroll through all of them.
Thank you again for 1) being so very helpful and 2) for being so extremely patient with a FileMaker newbie
Just an observation, but looking at the sample files aren't the keys set up in reverse. The relationship as I understand it is one Authentication record (Primary Serial Id) to many records in Notice (Foriegn Key). In the sample the relationship is set up with a primary key in Notice to a forign key in Authentication defining a one notice record to many authentication records?
You need a different relationship for your portal is all.
A relationship like this:
ParentTable::field x Notes::field
You can change the operator form the default = sign by doubleclicking the relationship line in the relationship graph.
Will match every record in Notes to every record in the Parent table.
Since you may have more than one admin, you may want to capture the current Admin's account name in a global field in the parent table and use something like:
ParentTable::gAccountName = Notes::AccountName
With a global field in the parent table, you can flip through your records and the current user will see the notes that apply to them, but a different user--even when doing this at the same time on another client machine of the network--will just the notes that apply to them.
It's all a matter of defining the relationships needed to accomplish what you want to see.
Wow Ron, that would be called fatigue after staring at this huge project for hours LOL
Thanks for pointing that out.
Ok, that makes perfect sense Phil thanks. Fog is clearing now. I guess a large part of it is getting used to working with this type of databasr system, it is VERY different from coding out a query statement I need. I suppose once I get used to it this system could make design very fast in a WYSIWYG sort of way.
But thanks for explaining it in a way that I could wrap my head around! =)
I am wondering if we need some more information to be sure we are giving you what you need.
For example you say that from the Authentication layout you would like to be able to scroll through all the notice records.
Does each notice apply to all Authentication records or is a notice meant to be applied to a specific Authentication record?
In most cases a portal is used to narrow down the related records to only show the child records that apply to a specific parent. For example, you might have two notices for one authentication record and three notices for another. In which case when you are on the first Authentication record you would only see the two related records in the portal. On the second Auth record you would see the three notices that apply to it.
If in your case, you truly want to see all notice records no matter which Authentication record you are on then you are all set.
If this is not the case there may still be work to be done.
As I said, just looking for clairification to be sure you are getting what you need.