You need to sign in to do that
Don't have an account?
Can't figure out how to display a simple SUM function on my VF Page
Hello, I need to display the SUM of Cash collected for a certain employee, but I'm having trouble figuring out how. Since I'm using the sum function, I plan on only having 1 field come back in my SQL Statement.
The SQL Statement I have is: Select Sum(CashCollection) From Sales Where employeeid='220066'
I created a very simple Apex class for this. Everything compiled without error, so I'm assuming it's correct, but I am still new to SalesForce SQL
public class CashCollection { SObject sumCash; public SObject getSumCash() { sumCash = [SELECT SUM(CashCollection) sum FROM Sales__c WHERE employeeid__c = '220066']; return sumCash; } }
My Visual Force page is where I'm struggling on how to pull my sum value. Here's the code I have, but I'm getting an unrecognizable property error: "CashCollection.sumCash not recognizable"
<apex:page controller="CashCollection"> <apex:dataTable value="{!sumCash}" var="temp"> <apex:column > <apex:outputText value="${!temp.sumCash.sum}"/> </apex:column> </apex:dataTable> </apex:page>
If anyone could help provide insight into this, it would be great.
Thanks!
Mike
This line:
Is the culprit I'd say. 'temp' is the returned value from the getSumCash method, and it doesn't have a property called sumCash. However, simply changing it to:
probably won't work either, as it is a generic sobject, and they don't have a property named sum either.
You should be able to use dynamic visualforce bindings for this:
All Answers
This line:
Is the culprit I'd say. 'temp' is the returned value from the getSumCash method, and it doesn't have a property called sumCash. However, simply changing it to:
probably won't work either, as it is a generic sobject, and they don't have a property named sum either.
You should be able to use dynamic visualforce bindings for this:
One more issue. The method getSumCash is returning an SObject, not an array of sObjects, So you can't use it as the value of a table interation.
I don't think you need the table at all here. You get back a single row assigned to the sobject, so just
<apex:outputText value="{!sumcash[sum]}" /> should do it.
Or unless this method is used for other purposes also, why not make getSumCash return the number directly?
Actually you can use a single sobject as the value for a table.
I agree that it's counter intuitive and there's no real need for it, but if you want to present the one item in table form with a single row then it is a viable solution.
Thanks everyone for replying.
The following piece of code worked for me: <apex:outputText value="${!temp['sum']}"/> on my Visual Force page.
I have another quick question. Since I'm only returning one field, is it necessary to set up the <apex:dataTable> structure to display this value? I tried just using the <apex:outputText> tag alone, but it didn't seem to work.
Thanks!
Mike
That should work okay. You won't be able to use the temp variable though as that's your table iterator. You should be able to apply the same dynamic technique to the sumCash property:
Great. Thanks, Bob! That line of code worked perfectly. I'm going to use this instead of creating a dataTable structure every time because it will help organize and clean up my code better.
Thank you Bob, it also works for me...
but whatever result i am getting, is in numeric format, i want that it should be in currency format,
for ex.
right now i am getting result something like this
Amount $3750000.07
it should look like $37,50,000.07
How can i solve this issue???
Thank you!
You'll need to use an outputtext and pass the value as a parameter to it, something like: