0% found this document useful (0 votes)
375 views2 pages

VFP Cross Tab Query Vs

This document discusses automating Excel pivot tables from Visual FoxPro as an alternative to outputting cross tab data to reports. It provides an example code snippet that loads VFP data into an Excel workbook, creates a pivot table from the data, formats the pivot table, and previews the report. The code shows how to select data, add fields to the pivot table, format cells and page setup, and null references before returning.

Uploaded by

rafohorna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
375 views2 pages

VFP Cross Tab Query Vs

This document discusses automating Excel pivot tables from Visual FoxPro as an alternative to outputting cross tab data to reports. It provides an example code snippet that loads VFP data into an Excel workbook, creates a pivot table from the data, formats the pivot table, and previews the report. The code shows how to select data, add fields to the pivot table, format cells and page setup, and null references before returning.

Uploaded by

rafohorna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

VFP Cross Tab Query vs.

Excel Pivot Table

Today I learned how to automate Excel from VFP to create pivot tables. This totally rocks and
is a much more powerful option than trying to output VFP cross tab data (created by the cross
tab wizard or foundation classes) to FRX reports.
I was able to show my client how to easily create charts from the same pivot table in a
variety of ways.
A great resource for getting started in doing this is the book Microsoft Automation with Visual
Foxpro. I used a combination of the examples in the book, recording Excel macros, etc.
The reason I needed a good cross tab solution was that a long time client of mine had
used Foxfire for many years. However, I just recently upgraded them to VFP9 and SQL Server
and was evaluating the effort required to move to the next version of Foxfire which is still in
beta. Needless to say, I was not having much luck. So, long story short, they needed the
ability to run several reports from their new app ASAP. Many of these were cross-tabs which
Foxfire did a pretty good job of making easy (but not an option for now). I wanted to keep it
just as simple and was looking for a more dynamic alternative to Foxpro reports (FRX) to
handle the output.
My co-worker Andy Needham suggested I take a look automating Excel. Great idea! In a single
day I had 5 cross-tabs created in Excel and the client loves it!
Here is some sample code from the class I created: (Note: VFP cursor already loaded in Excel
using COPY TO TYPE XL5 before this method is called)
LOCAL llReturn, ;
loExcel, ;
loBook, ;
loPivot, ;
loSourceData, ;
loDestination, ;
lnLastLine
llReturn = .T.
lobook = GETOBJECT(This.cExcelfile)
loExcel = lobook.Application
loexcel.Visible = .T.
lobook.Windows[1].Activate()
loBook.Sheets[1].Range("A1").Select
loExcel.ActiveCell.FormulaR1C1 = "Customer Name"
loBook.Sheets[1].Range("A2").Select
lobook.Sheets[1].Range("A1:C"+TRANSFORM(this.nlastline)).columns.Autof
it()
loSourceData =
lobook.Sheets[1].Range("A1:C"+TRANSFORM(this.nlastline))
loBook.Worksheets.Add(,loBook.Sheets[1])
loDestination = loBook.Sheets[2].Range("A1")
loPivotTable =
lobook.Sheets[1].PivotTableWizard(1,loSourceData,loDestination,This.cR
eporttitle,.T.,.T.)
WITH loPivotTable
.AddFields("Customer Name","order_month")
.PivotFields(this.ccountcolumn).Orientation = 4
.PivotFields("Order_Month").NumberFormat = "mmmm-yyyy"
.NullString = ""
.PageFieldOrder = 2

.PrintTitles = .F.
.RepeatItemsOnEachPrintedPage = .F.
.PrintTitles = .T.
.RepeatItemsOnEachPrintedPage = .T.
.PivotSelect("", 0)
.Format(16)
ENDWITH
WITH loBook.Sheets[2].Cells
.Select
.Range("A6").Activate
ENDWITH
loExcel.Selection.RowHeight = 16.5
WITH loBook.Sheets[2].PageSetup
.PrintTitleRows = "$1:$2"
.PrintTitleColumns = "$A:$A"
.LeftHeader = "&D&T"
.CenterHeader = This.cReporttitle
.RightHeader = "Page &P"
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = loExcel.InchesToPoints(0.25)
.RightMargin = loExcel.InchesToPoints(0.25)
.TopMargin = loExcel.InchesToPoints(.25)
.BottomMargin = loExcel.InchesToPoints(.25)
.HeaderMargin = loExcel.InchesToPoints(0.25)
.FooterMargin = loExcel.InchesToPoints(0.25)
.PrintHeadings = .F.
.PrintGridlines = .F.
.PrintComments = -4142
.PrintQuality = 600
.CenterHorizontally = .F.
.CenterVertically = .F.
.Orientation = 2
.Draft = .F.
.PaperSize = 1
.FirstPageNumber = -4105
.Order = 2
.BlackAndWhite = .F.
.Zoom = .F.
.FitToPagesWide = 1
.FitToPagesTall = .F.
ENDWITH
loBook.Sheets[2].PrintPreview
loPivotTable = null
loSourceData = null
loDestination = null
loExcel = null
loBook = null
RETURN llReturn

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy