Publishing Your PDB Under Windows Jim Quigley conEdison.

Post on 26-Mar-2015

217 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

Transcript

Reset

Member: Folder:

Member System in Library d:\PDB\ Beginning Thursday, November 02, 2000

PCTRGQTA PCTDPCTM PCTINTTM PCTPRVTM PCTCPUTM PCTUSRTM ALIGFIXU CNTXTSWT15.71 0.845 0.331 6.189 19.672 13.485 0. 391.76115.71 0.389 0.169 3.656 11.709 8.053 0. 222.26815.71 0.367 0.168 3.704 12.458 8.752 0. 248.41715.71 0.273 0.127 2.637 8.585 5.947 0. 189.7215.71 0.35 0.139 3.223 11.723 8.5 0. 215.09315.71 0.395 0.146 3.423 10.739 7.315 0. 226.97215.71 0.563 0.205 4.357 13.092 8.735 0. 267.9615.71 0.929 0.311 6.579 19.929 13.352 0. 361.801

15.822 1.197 0.402 10.362 29.489 19.128 0. 459.92916.38 1.419 0.482 28.815 53.956 25.141 0. 523.81416.38 1.272 0.43 12.282 33.391 21.107 0. 484.00316.38 1.303 0.452 12.243 34.578 22.335 0. 508.45616.38 1.262 0.438 11.22 32.047 20.827 0. 492.237

I J K L M N O P123456789

1011121314

0.

0.5

1.

1.5

Series

Introduction

Tutorial

How to publish the contents of a database using features available in Microsoft Windows

Local machineLegacy client/server Intranet/Internet

Introduction

“Might be a little bit heavy on the VB/ HTML side for old-time capacity planners...”

Vic Soder, CMG ERB

If you have ever written a COBOL program, you are overqualified for web development.

Disclaimer

All products mentioned are the property of their owners

It may possible to use these technologies to publish data in ways that were not intended, or that have licensing implications

Agenda

ScriptingData Access Methods Overview Configuration Issues Sample Scripts

ActiveX Controls Overview Sample Scripts Office Web Components

Scripting

Scripting

Script is the glue

Vbscript and Jscript

Legacy WindowsWSH – Windows Scripting Host

BrowserClient-side and Server-side

Scripting

SAS

SQLServer

AccessWindow

BrowserMDAC

Script

ACTIVEX

MDAC

Microsoft Data Access Components

MDAC

Universal Data Access

1) ODBC – Open Database Connectivity

2) OLE DB – OLE Database

3) ADO – Active Data Objects

4) RDS – Remote Data Services

5) ADO.Net - ???

MDAC

Non-SQL DB

SQL-aware Database

ODBC

OLE DB

ADO

Application

MS ODBCProvider

ODBC

Circa 1990

Ubiquitous drivers

Not an Object-Oriented API

Relational bias

OLE DB

COM interface

Support for broader spectrum of data repositories

Interface used by ADO

ODBC data sources accessible via “MS OLE DB provider for ODBC” Possibly with reduced function

ADO

(currently) Highest level interface

Simplified object structure

Relies on OLE DB

RDS

Makes ADO data sources accessible across a network

HTTP, HTTPS, or DCOM

Uses Microsoft Internet Information Server as conduit

RDS

IIS

OLE DB Provider

ODBC Driver

Database

Application

ADO

RequestingProcess

HTTP

ServingProcess

MDAC Configuration Issues

ODBC Data Sources

Control PanelAdministrative Tools

Data Sources (ODBC)

SAS ODBC Drivers System Data Source TCP Port

c:\WINNT\system32\drivers\etc\services

SAS TCP Port

SAS ODBC vs. OLE DB

ODBC

Separate install

Full SQL support

Runs Proc OdbcServ instance

Field name is variable label

OLE DB

Auto install with V8

SQL not supported

Direct lib/member access

Field name is variable name

MSDFMAP.ini

RDS Security

C:\WinNT\System\MSDFMAP.ini

Create token to identify local data source for remote access

Determine permitted access

MSDFMAP.ini

MSDFMAP.ini

[connect default]Access=NoAccess[sql default];Sql=" “ ' <---comment this line out[connect PDB]Access=ReadOnlyConnect="Provider=sas.LocalProvider.1;

Data Source=d:\PDB\Detail\“[connect SasRemote]Access=ReadOnlyConnect="Data Source=SasLocal"

Other RDS/IIS Issues

IIS uses IWAM-servername as proxy (Launch IIS Process Account)

WQExxxxx.TRC diagnostics

Recommendations (SAS) ODBC – Start Proc OdbcServ manually OLE DB – give IWAM-servername read

permission to PDB

MDAC Interfaces

ADO Objects

Connection RecordSet

Fields

Command

ParametersErrors

Properties

RecordSet Object

Set rs = CreateObject(“ADODB.Recordset”)

Methods rs.Open, rs.Close rs.MoveFirst, Rs.MoveNext

Properties rs.BOF, rs.EOF rs.Connection

Field Object

Fields collection contains Field objects, one for each column in the table

rs.Fields.Count – number of columns

rs.Fields(x).Value - value

rs.Fields(x).Name – label

Warning

Code to Follow

ADO Script - WSH

Set rs = CreateObject(“ADODB.Recordset”)ConnectionString = “DSN=SasLocal”Sql = “Select PCTCPUTM from PDB.System”rs.Open Sql, ConnectionStringWhile Not rs.EOF

Msg = Msg + CStr(rs.Fields(0).Value) + vbCrLfrs.MoveNextend

MsgBox MsgD:\Cmg2000\AdoWsh.

vbs

RDS Script - WSH

Set rs = CreateObject("ADODB.Recordset")ConnectionString = “Provider=MS Remote;” + _“Remote Server=http://ServerName;” + _“Handler=MSDFMAP.Handler;”+ _“Data Source=SasRemote” Sql = “Select PCTCPUTM from PDB.System“rs.Open Sql, ConnectionStringWhile Not rs.EOF

Msg = Msg + CStr(rs.Fields(0).Value) + vbCrLfrs.MoveNextend

MsgBox Msg D:\Cmg2000\RdsWsh.vbs

ADO Script – Client-Side

<HTML><SCRIPT LANGUAGE=vbscript>Set rs = CreateObject("ADODB.Recordset")ConnectionString = "DSN=SasLocal“Sql = “Select PCTCPUTM from PDB.System“rs.Open Sql, ConnectionStringWhile Not rs.EOF

Msg = Msg + rs.Fields(0).Value + vbCrLfrs.MoveNextend

MsgBox Msg</SCRIPT></HTML> D:\Cmg2000\AdoClient.htm

ADO Script – Server-Side

<HTML><%Set rs = CreateObject("ADODB.Recordset")ConnectionString = "Data Source=SasLocal“Sql = "Select PCTCPUTM from PDB.System“rs.Open Sql, ConnectionStringResponse.Write("<SELECT>" + vbCrLf)While Not rs.EOF str = "<OPTION>" + CStr(rs.Fields(0).Value) + vbCrLf Response.Write(str) rs.MoveNextWend http://.../AdoServer.asp%> </OPTION></SELECT> </HTML>

ADO Script Options

Access Type Script Method Access Method

Local Machine WSH orClient-Side

Any

Client / Server WSH orClient-Side

RDS orOLE DB

Intranet UNC Accessible

Client-Side RDS orOLE DB

Internet Server-Side Any

ActiveX Objects

ActiveX Objects

COM subroutinesVisible and notMicrosoft and notProgId (OWC.Spreadsheet) or ClassId“0002E510-0000-0000-C000-000000000046” Create them Read/write properties Call methods Handle events

Submit

Member: Folder:

Member System in Library d:\PDB\ Beginning Thursday, November 02, 2000

A B C D E F G H123456789

1011121314

ActiveX – No Script

<HTML><OBJECT HEIGHT=500 WIDTH=100%classid=clsid:C4D2D8E0-D1DD-11CE-940F-008029004347></OBJECT></HTML>

D:\Cmg2000\NoScript.htm

ActiveX – Data Bound

<HTML><OBJECT id=grid height=600 width=100%classid=clsid:0ECD9B64-23AA-11D0-B351-00A0C9055D8E></OBJECT><SCRIPT LANGUAGE=vbscript>Set rs = CreateObject("ADODB.Recordset")Set cn = CreateObject("ADODB.Connection")cn.Open "Provider=sas.LocalProvider.1;Data Source=d:\PDB\“rs.Open “System", cn, , , 512 'adCmdTableDirectset grid.DataSource = rs</SCRIPT></HTML> D:\Cmg2000\DataBound.htm

Microsoft Office Web Components

Office Web Components

Ship with Office 2000c:\Program Files\MicrosoftOffice\Office\MsOwc.dll

Spreadsheet clsid:0002E510-0000-0000-C000-000000000046 ProgId = OWC.Spreadsheet

Chart clsid:0002E500-0000-0000-C000-000000000046 ProgId = OWC.Chart

Pivot Table - OWC.PivotTableDSC - OWC.DataSourceControl

OWC Spreadsheet

Resembles Excel spreadsheet

Visible or not

Contains one or more Worksheets

Worksheets contain cells spreadsheet.worksheet.Cell(row,col) Single Worksheet then

spreadsheet.Cell(row,col)

OWC Spreadsheet Range

Identifies a rectangular group of cells

Used by methods that operate on groups of cells set Range = spreadsheet.Columns(x) object.Range(TopLeft : BottomRight)

OWC Spreadsheet API

ss.ActiveSheet.UsedRange.Clear

ss.ViewableRange = ss.ActiveSheet.UsedRange.Address

ExcelStyleCellReference = ss.Columns(Columns).Address

Set c = ss.ConstantsConstants available at run-time

OWC Spreadsheet Formatting

ss.TitleBar.Caption = “string"

ss.Columns.ColumnWidth = 100

ss.Rows(x).Font.Bold = True

range.NumberFormat = "hh:mm“

ss.Columns(x).Hidden = True

ss.DisplayRowHeaders = False

ss.ScreenUpdating = False

Populate Spreadsheetfrom RecordSet

Row = 1While Not rs.EOF Col = 1 While Col <= rs.Fields.Count ss.ActiveSheet.Cells(Row, Col).Value =

rs.Fields(Col - 1).Value Col = Col + 1 Wend Row = Row + 1 rs.MoveNextWend

Populate Faster

Set field = rs.FieldsSet cell = ss.ActiveSheet.CellsRow = 1While Not rs.EOF Col = 1 While Col <= rs.Fields.Count cell(Row, Col).Value = field(Col - 1).Name Col = Col + 1 Wend Row = Row + 1 rs.MoveNextWend

OWC Chart

General purpose charting functions 45 chart types

ChartSpace - one or more charts

Careful with terminology Series – points to be plotted as a group Value axis is vertical (y) Category axis is horizontal (x)

Chart Types

ColumnBar Line Pie Scatter Bubble Area Doughnut RadarStockPolar

ClusteredStacked Stacked100MarkersSmooth ExplodedFilledHLC OHLCCombo

OWC Chart API

Set cs.DataSource = ss.ObjectChart data will come from spreadsheet

Set chart = cs.Charts.Add()Add a chart to the chart space

cs.ClearClear all charts in the chart space

Set c = cs.ConstantsConstants available at run-time

OWC Chart - Formatting

chart.Type = c.chChartTypeLine Basic chart type – 46 varieties

chart.HasLegend = TrueChart will have legend

chart.HasTitle = TrueChart will have title

chart.Title.Caption = “C1”Take title from cell C1 in spreadsheet

OWC Chart - SetData

Method used to identify series1) Dimension or attribute of chart2) Data source3) Data Reference

chart.SetData c.chDimSeriesNames, 0, “A2“Variable name that will appear in legend

chart.SetData c.chDimValues, 0, “C2:C4“Cells containing value (y) axis data

pointschart.SetData c.chDimCategories, 0, “B2:B4”

Cells with category (x) axis data points

OWC Chart Series

0

5

10

15

20

25

30

1:00 2:00 3:00

InetInfo

OWC Chart Series

A B C

1 Process StarTime PctCpuTm

2 InetInfo 01:00 30

3 InetInfo 02:00 20

4 InetInfo 03:00 25

Chart from Spreadsheet

set cs.DataSource = ss.ObjectSet chart = cs.Charts.Add()Set c = cs.Constantschart.Type = c. chChartTypeColumnClusteredchart.HasLegend = Truechart.SetData c.chDimSeriesNames, 0, “A2“chart.SetData c.chDimValues, 0, “C2:C4“chart.SetData c.chDimCategories, 0, “B2:B4"

References

Programming Microsoft Office 2000 Web Components

By Dave Stearns

Microsoft Press

References

SAS ODBC User’s Guide and Programmer’s Reference, SAS InstituteMicrosoft Developer Network Library (MSDN) Microsoft TechNetMSNews.Microsoft.com newsgroups

Public.Data.ADO.RDS Public.Office.Developer.Web.Components

http://www.Able-Consulting.com/

SasToOwc.htm – Sample App

D:\Cmg2000\SasToOwc.htm

Issues

Much of this is Windows-only technolgy

Un-terminated character strings when accessing SAS ODBC data sources through RDS

Summary

top related