Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Excel pivot table with target
Message
From
26/06/2011 20:53:04
Mk Sharma
Shrishti Solutions
Mumbai, India
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Title:
Excel pivot table with target
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP SP2
Network:
Windows XP
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01516163
Message ID:
01516163
Views:
133
CLOSE TABLES ALL

CREATE TABLE sampledata (party_name c(20), prod_name c(20), yearname N(4), sal_qty N(6), target_qty N(6))

INSERT INTO sampledata (party_name,prod_name,yearname,sal_qty) VALUES ('PARTY A','PRODUCT A',2010,45)
INSERT INTO sampledata (party_name,prod_name,yearname,sal_qty) VALUES ('PARTY A','PRODUCT B',2010,40)
INSERT INTO sampledata (party_name,prod_name,yearname,sal_qty) VALUES ('PARTY A','PRODUCT A',2011,30)
INSERT INTO sampledata (party_name,prod_name,yearname,sal_qty) VALUES ('PARTY A','PRODUCT B',2011,25)
INSERT INTO sampledata (party_name,prod_name,yearname,sal_qty) VALUES ('PARTY A','PRODUCT B',2011,25)

INSERT INTO sampledata (party_name,prod_name,yearname,target_qty) VALUES ('PARTY A','PRODUCT A',2010,50)
INSERT INTO sampledata (party_name,prod_name,yearname,target_qty) VALUES ('PARTY A','PRODUCT B',2010,45)

INSERT INTO sampledata (party_name,prod_name,yearname,target_qty) VALUES ('PARTY A','PRODUCT A',2011,40)
INSERT INTO sampledata (party_name,prod_name,yearname,target_qty) VALUES ('PARTY A','PRODUCT B',2011,45)
USE

LOCAL oexcel AS Excel.APPLICATION
LOCAL oWorkbook AS Excel.WorkBook
LOCAL oPivotCache AS Excel.PivotCache
LOCAL oPivotTable AS Excel.PivotTable


DATAPATH=SYS(5)+CURDIR()
oexcel = CREATEOBJECT("excel.application")
oexcel.APPLICATION.VISIBLE = .T.
oWorkbook = oexcel.Workbooks.ADD()
oTargetSheet = oWorkbook.Sheets.ADD()
oTargetRange = oTargetSheet.RANGE("A2")
oPivotCache = oWorkbook.PivotCaches.ADD( 2 ) && external data
oPivotCache.CONNECTION = "OLEDB;Provider=vfpoledb.1;data source=" + DATAPATH
oPivotCache.Commandtext = "select * from sampledata"
oPivotTable = oPivotCache.CreatePivotTable( oTargetRange, "PivotTable" )
oPivotTable.PivotFields("party_name").ORIENTATION = 1 && row
oPivotTable.PivotFields("prod_name").ORIENTATION = 1 && row
oPivotTable.PivotFields("yearname").ORIENTATION = 2 && column
oPivotTable.PivotFields("sal_qty").ORIENTATION = 4 && data
oPivotTable.PivotFields("target_qty").ORIENTATION = 4 && data

* Calculate % change
oChangeField=oPivotTable.AddDataField(oPivotTable.PivotFields("sal_qty"), "year_avg")
oChangeField.Calculation= 3  && xlPercentOf
oChangeField.BaseField="yearname"
oChangeField.BaseItem="(previous)"

oPivotTable.CalculatedFields.ADD("avg_diff", "=sal_qty/target_qty*100")
oPivotTable.PivotFields("avg_diff").ORIENTATION = 4 && data

* Calculate % change
oChangeField=oPivotTable.AddDataField(oPivotTable.PivotFields("avg_diff"), "avg6")
oChangeField.Calculation= 3  && xlPercentOf
oChangeField.BaseField="yearname"
oChangeField.BaseItem="(previous)"
Showing Wrong Grand Total for "Avg_diff"

warm regards,
mk.
Next
Reply
Map
View

Click here to load this message in the networking platform