<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="sc_ScDataPilotTableObj" script:language="StarBasic">


'*************************************************************************
'
'  Licensed to the Apache Software Foundation (ASF) under one
'  or more contributor license agreements.  See the NOTICE file
'  distributed with this work for additional information
'  regarding copyright ownership.  The ASF licenses this file
'  to you under the Apache License, Version 2.0 (the
'  "License"); you may not use this file except in compliance
'  with the License.  You may obtain a copy of the License at
'  
'    http://www.apache.org/licenses/LICENSE-2.0
'  
'  Unless required by applicable law or agreed to in writing,
'  software distributed under the License is distributed on an
'  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
'  KIND, either express or implied.  See the License for the
'  specific language governing permissions and limitations
'  under the License.
'
'*************************************************************************





' Be sure that all variables are dimensioned:
option explicit


' REQUIRED VARIABLES for interface/service tests:

' Requiered for com.sun.star.container.XNamed
Global cNameToSet As String ' "fixed" if name is fixed

' Required for com.sun.star.sheet.XDataPilotTable
Global oOutputRange As Variant


Sub CreateObj()

'*************************************************************************
' COMPONENT: 
' sc.ScDataPilotTableObj
'*************************************************************************
On Error Goto ErrHndl
    Dim oSheet As Object
    Dim i, j As Integer
    Dim oDataPilotTables As Object
    Dim oDataPilotDescriptor As Object
    Dim oFilterDescriptor As Object
    Dim oDataPilotField As Object

    oDoc = utils.createDocument("scalc", cObjectName)
    oSheet = oDoc.Sheets.getByIndex(0)

    for i = 1 to 5
    	oSheet.getCellByPosition(0, i).String = "Row" &amp; i
    	oSheet.getCellByPosition(i, 0).String = "Col" &amp; i
    next i

    for i = 1 to 5
        for j = 1 to 5
            oSheet.getCellByPosition(i, j).Value = 2.5 * j + i
        next j
    next i

    Dim sCellRangeAddress As New com.sun.star.table.CellRangeAddress
    sCellRangeAddress.Sheet = 0
    sCellRangeAddress.StartColumn = 1
    sCellRangeAddress.StartRow = 0
    sCellRangeAddress.EndColumn = 1
    sCellRangeAddress.EndRow = 5

    Dim sCellAddress As New com.sun.star.table.CellAddress
    sCellAddress.Sheet = 0
    sCellAddress.Column = 7
    sCellAddress.Row = 8

    Dim FilterFields(1) As New com.sun.star.sheet.TableFilterField
    FilterFields(0).Connection = com.sun.star.sheet.FilterConnection.AND
    FilterFields(0).Field = 1
    FilterFields(0).isNumeric = true
    FilterFields(0).StringValue = "4"
    FilterFields(0).Operator = com.sun.star.sheet.FilterOperator.GREATER

    FilterFields(1).Connection = com.sun.star.sheet.FilterConnection.AND
    FilterFields(1).Field = 1
    FilterFields(1).isNumeric = true
    FilterFields(1).StringValue = "12"
    FilterFields(1).Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL

    oDataPilotTables = oSheet.getDataPilotTables
    oDataPilotDescriptor = oDataPilotTables.createDataPilotDescriptor()
    oDataPilotDescriptor.setSourceRange(sCellRangeAddress)
    oFilterDescriptor = oDataPilotDescriptor.getFilterDescriptor()
    oFilterDescriptor.setFilterFields(FilterFields())

    oDataPilotField = oDataPilotDescriptor.getDataPilotFields().getByIndex(0)
    oDataPilotField.Function = com.sun.star.sheet.GeneralFunction.SUM
    oDataPilotField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.DATA    

    oDataPilotTables.insertNewByName(cObjectName, sCellAddress, oDataPilotDescriptor)

    oObj = oDataPilotTables(0)
    oOutputRange = sCellAddress

Exit Sub
ErrHndl:
    Test.Exception()
End Sub

</script:module>
