Jump to content
Claris Engage 2025 - March 25-26 Austin Texas ×

This topic is 7981 days old. Please don't post here. Open a new topic instead.

Recommended Posts

Posted

I have a row of buttons each which shows a date. When the button is selected the piece of equipment is shown and the total hours are shown through a summary field editable so that when a date is changed. I also have a button that creates a subsummary report that shows all days and hours and works fine... Is there any way at all to have a subsummary report that is not viewed through the preview mode...ie. (in browse mode) editable while viewing all jobs for all days?

thanks

c

Posted

Is there any way at all to have a subsummary report that is not viewed through the preview mode

Sorry, subsummary reports can only be viewed on screen when in the preview mode.

Mike

Posted

Although you can't have summary parts visible in browse mode, you can have calculated fields that use the GetSummary() function to accomplish something similar. You can also use a self-join relationship and the Sum(Selfjoin::SomeNumericField) function to give you totals while in browse mode.

Posted

I have used the self join sum method above before, but have not found a way to display the subsummarry data on only the last record of each category (mimicking the preview format). Does anyone know of a way to get a self join running count (without a loop script)? The calc I'm envisioning is something like:

case(count(selfjoin::category) = RunningCount(selfjoin::category), sum(selfjoin::amount), "")

only RunningCount(selfjoin::category)does not exist.

Not critical, but I've always wondered. Any suggestions?

Posted

Hi,

Try this

Case(Max(selfjoin::category) = category,Sum(selfjoin::amount),"")

This will only display on the last record where the self join::category equals the category (eg, FileMaker = FileMaker)

If you change out the Max for Min, then you can display it on the first row instead of the last.

HTH

Posted

pretty slick!

come to think of it, this looks like a variation off the mark duplicates calc I was just reading up on a few days ago in another place in the forum (I think it may have been your post as well). While i trust that it works (will check it out later), I still dont get why Max(selfjoin::category)wouldnt return the same value for all records that have the same category? FM help says that Max "Returns the highest valid value in a field in matching related records specified by (relationship::relatedfield), whether or not these records appear in a portal."-no help there. I just get nervous when using calcs that I dont understand how they get the results they do.

Also, does it have to do with the creation order or position in the found set?

Anyway, I will play with it tonight- thanks for the tip!

Posted

Hi,

Yes. This is a variation off of the duplicate post in the forum (and yes it was me).

I just thought that if it can see the first record and mark it with a 1 and the rest with a 0 (zero) for duplicates, then why couldn't it find the max (or in this case it functions more along the lines of Last) record and only display the sum of a field on that record. This works based on the creation order of the records, as opposed to their position in the sort order. Will always display on the last record created (or, the last record in the sort order)

HTH

Posted

Andy-

Thanks again, but, I still dont understand why it would not display on all records of the same category (I do understand that it does, but why why why?), after all, shouldn't all records of the same category share the same max(selfjoin::category) ? They all share the same max(selfjoin::amount) (at least I think). Am I missing something about the Max function, or is this just one of those things that no one understands but is useful none the less?

Cheers

Posted

Hi,

This is not so much about the MAX function, but more the self relationship::category to the category field.

All the MAX is doing is looking to the last record, instead of the first (cause that is where you wanted it.)

Case(Category = SelfJoin::Category,Sum(SelfJoin::Amount),"")

This self join relationship sees the first record created as the KEY record and will add the sum to only that record.

whereas

Case(Max(SelfJoin::Category) = Category,Sum(SelfJoin::Amount),"")

will add the sum to the last record only. This is because the Max is now looking to the SelfJoin:: relationship which will take you to the last record.

Am I explaining this ANY better???

Don't focus on the MAX, but on the SelfJoin relationship.

Posted

Hmmmmmmmmm

Yes, I think you are explaining it better. I am starting to get the idea- I was under the impression that Case(Category = SelfJoin::Category,Sum(SelfJoin::Amount),"") would never return the result "". I will put this in my pipe and smoke it over lunch. tongue.gif

Thanks!

Posted

I am trying to apply this to a current project...

I have a "sales" file which creates a record for every merchandise item everytime there is an event. Each record has a serial# for the item, a date and a tour name. Totals are calculated thru a self-join relationship based on serial#, but I need to get subtotals based on the tour name.

I tried

Case(Max(SelfJoinItem::TourName) = TourName, Sum(SelfJoinItem::Sold_L), ""), but I must be missing the concept, because it delivers nothing.

Posted

I think Andy's formula is missing a step. All items in the same category will by definition have the same category number, so the formula:

Max(SelfjoinByCategory::Category)=Category

will always return true. Rather than referencing the Category field, you need to reference a field that is unique in each record such as a serial number field. So you would need to change the formula to:

Max(SelfjoinByCategory::SerialNo)=SerialNo

Also, if The SerialNo field (or whatever you are using) is a text field with non-numeric characters, the Max function won't work. Better to use Last() like so:

Last(SelfjoinByCategory::SerialNo)=SerialNo

Posted

Still not working...I get nothing at all with the calcualtion

Case(Last(SelfTourName::serial) = serial, sum(SelfJoinbySerial::soldL), "")

To test, I changed the calculation to

Case(Last(SelfJoinbyTourName::serial) = serial, "1", "")

This should put a 1 in the last record where the tour name and serial number are the same, right? It puts a 1 in all three records for a single serial# and nowhere else.

Posted

Ruth,

First. What is your SelfJoin relationship. This should be the relationship for your tour name::tour name.

If this is the case, then this should work.

It should place a 1 in the last record where the tour name is the same

Posted

The self-join relationship is TourName = ::TourName

I deleted it and recreated it, I'm still getting the same result. The "1" appears only in all 3 records for 1 serialNo.

When I replace the "1" with Sum(SelfJoinbySerial::SoldL), all fields are blank.

Posted

There's something wrong with your description. First you don't need a selfjoinBySerial relationship. You only need a selfjoinByTourName based on the TourName field. The Serial number field will be different for every record even for those of the same TourName. So if you have the following records:

TourName, SerialNumber

------------------------------------

Bombay, 00001

Bombay, 00005

Bombay, 00009

Then the formula:

Last(SelfJoinByTourName::SerialNumber)

will produce "00009" for each of these records.

The formula:

Last(SelfJoinByTourName::SerialNumber)=SerialNumber

will produce 0 for the first two records, and 1 for the last one.

If this is how you have it set up, and it still doesn't work, make sure that the result types of your calculations match the field type of your serial number (ie, they either should all be text, or all number).

Posted

Andy,

i thought about it some more, and I still dont get it. I also tried experimenting with the formula, and with no success at all. I found that not only did Case(Max(SelfJoin::Category) = Category,Sum(SelfJoin::Amount),"")produce no data for any record, but that also Max(SelfJoin::Category)was blank for every record as well. I tried these as text, number, date, and container (for the heck of it) calcs, and they were all based on the selfjoin relationship category::category. I use FM5.0 on a PC Win ME (lucky ME), although I'm not sure how that effects things. I am beginning to suspect that your computer was bit by a radioactive klezworm as a teenager, endowing it with supernatural powers smile.gif any chance you could post a working sample of your calc? If there is some way to make it work, would really be a cool feature.

-edited below-

Ruth,

Untill this gets resolved, I was going to propose a work around using a loop script that just got its butt whupped by Bobs much simpler idea posted above.

Posted

Righteous!

The calc in your file does work indeed, but is slightly different then what you had posted above. based on the selfjoin relationship category::category, the Max refers to selfjoin::recordID, a different field. The problem was that the above calcs used Max(selfjoin::category), the very same field that selfjoin is based on, giving it always a nil result (at least for me). The resulting calc if essentially the same as Bobs idea above.

Cool tip, thanks for sharing.

Posted

Hi Razumovsky,

Ooops. Sorry about that. Glad the sample file worked. And yes, it was my bad on displaying the category field as opposed to the recordID field. I just got caught up in the explanation.

All's well that ends well.

Posted

In order for the solution to work, the serial#'s must be unique. In my file, there are 32 serial numbers each representing a different piece of merchandise. I guess I need a subtotal of a subtotal.

Posted

Just for closure...

I found a simple solution by concatenating TourName & SerialNo, which allows me to use the calculation Sum(SelfJoinbyTourSerialNo::Sold).

Thanks for all the help, I learned a lot through this thread.

-Ruth

This topic is 7981 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

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