Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > comp.databases.filemaker > #3217
| From | Helpful Harry <HelpfulHarry@BusyWorking.com> |
|---|---|
| Newsgroups | comp.databases.filemaker |
| Subject | Re: Super Total? |
| Date | 2018-10-20 09:55 +1300 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <pqdgc8$p48$1@gioia.aioe.org> (permalink) |
| References | <1nwx6lz.1ylnupe9qxmodN%csampson@inetworld.net> |
On 2018-10-19 20:29:07 +0000, Charles H. Sampson said: > Helpful Harry <HelpfulHarry@BusyWorking.com> wrote: >> On 2018-10-08 00:39:06 +0000, Helpful Harry said: >>> On 2018-10-07 21:54:50 +0000, Charles H. Sampson said: >>>> >>>> Is there a simple way to create a field that contains the total of >>>> another field of all of the records of a database -- independent of the >>>> found set? I've looked at my Pogue book and found nothing. >>>> >>>> I know that it's pretty easy to write a script that does this and then >>>> set some appropriate script triggers. However, that involves the Show >>>> All Records operation and the whole point is to avoid messing with the >>>> existing found set. So, a related question is: Is there a way -- in a >>>> script -- to remember a found set and restore it later? I'm pretty sure >>>> I can do even this but my approach makes the state of the database >>>> somewhat fragile. >>>> >>>> TIA, and I'll be appropriately embarrassed if this is obvious. >>> >>> There's no need for a Script. Probably the easiest (not necessarily the >>> most efficient) way is to use a Relationship that groups *all* the >>> records together. >>> >>> 1. Create a new Global Field called g_AllRecords - the field type >>> doesn't matter, so say a Text Field. Temporarily put it on a >>> Layout and in Browse Mode enter the data of "All" into this >>> Field. It can then be deleted from the Layout. >>> >>> 2. Create a normal record Field called AllRecords. Set it to >>> Auto-enter the data value "All". This Field does not need to >>> be on any Layouts. >>> >>> 3. Create a Relationship linking the Global g_AllRecords Field to >>> the normal AllRecords Field. This links *all* the records in the >>> database together as a group, whether or not they are in the >>> current Found Set. >>> >>> 4. Now you can create a Calculation Field called c_Total_AllRecords >>> with the calculation of: >>> = Sum (Relationship::NumField) >>> where NumField is the Field you want to total. Make sure it uses >>> the Relationship version of the NumField, not the normal version. >>> This Field can be set as Global storage as well if you want to >>> save space in a database with MANY records. >>> >>> Done. Put the c_Total_AllRecords wherever you want the full dtabase >>> total to be shown. It can of course also be used in other calcualtions >>> and summaries. >>> >>> As a side note, you can use the same method for any of the "Aggregate" >>> functions to get an Average, Min, Max, Count, etc. of *all* the >>> database records regardless of the current Found Set. >> >> Sorry, I realised that I missed out a step there. The above will work >> for an empty database, but for a database which already has data >> entered you will of course need to also set the AllRecords to have the >> data "All" for every existing record. >> >> There are many ways to achieve this: >> >> - Temporarily put the AllRecords Field onto a Layout, go into >> Browse Mode and Find All records, then go through manually >> entering the "All" data into the Field. This is probably the >> fastest option for only a few records, especially if you use >> a Table View and simply copy the first "All" data and then >> quickly go down pasting it into all the other records. >> >> - For more than a few records, you can either ... >> >> A. go into Browse Mode and Find ALl records, enter the >> "All" data into the first record and leave the text >> cursor in the AllRecords Field, then use the Replace >> Field Contents command in the Records menu to let >> FileMaker automatically enter the data for the other >> records, >> or >> >> B. temporarily change the AllRecords Field to be a >> Calculation Field with the formula: >> = "All" >> and come out of the Define Fields window saving changes, >> then go back to the Define Fields windows and change >> AllRecords back to being a normal Field (the "All" data >> will be retained). > > That worked, Harry. Thanks. I particularly needed the "Replace Field > Contents" step, since I was working with around 7700 records. > > Is there any explanation for the steps involved? Is it a well-known > technique? I thought I understood databases pretty well, but this has me > stumped, in particular the self-related table bit. No idea if there's any explanation or how well-known it is. I've never bothered with any of the books / websites, etc., and usually just work out solutions to things myself. I don't even know what you'd "officially" call this kind of total ... it's not a 'grand total', for instance. A quick Google search for 'super total' does bring up a few places like these with the same answer: <https://community.filemaker.com/thread/115094> <https://forum.filemakertoday.com/topic/29481-sum-all-records/> It is a relatively straight-forward method though. The relationship simply enables you to access all of the records, regardless of the current Found Set, by creating a way of 'grouping' them ALL together ... as long as each record has that "All" data. I can't remember what I originally used this method for way back in FileMaker 3 days, possibly to obtain a count of the number of records in the database for the second part of a custom "X found records out of Y total records" message. Helpful Harry :o)
Back to comp.databases.filemaker | Previous | Next — Previous in thread | Next in thread | Find similar
Super Total? csampson@inetworld.net (Charles H. Sampson) - 2018-10-07 14:54 -0700
Re: Super Total? Helpful Harry <HelpfulHarry@BusyWorking.com> - 2018-10-08 13:39 +1300
Re: Super Total? Helpful Harry <HelpfulHarry@BusyWorking.com> - 2018-10-12 09:11 +1300
Re: Super Total? csampson@inetworld.net (Charles H. Sampson) - 2018-10-19 13:29 -0700
Re: Super Total? Helpful Harry <HelpfulHarry@BusyWorking.com> - 2018-10-20 09:55 +1300
Re: Super Total? csampson@inetworld.net (Charles H. Sampson) - 2018-10-21 14:38 -0700
Re: Super Total? csampson@inetworld.net (Charles H. Sampson) - 2018-10-12 00:57 -0700
Re: Super Total? Helpful Harry <HelpfulHarry@BusyWorking.com> - 2018-10-13 10:42 +1300
csiph-web