Making ODBC easier By Dave Doulton University of Southampton.

48
Making ODBC easier By Dave Doulton University of Southampton

Transcript of Making ODBC easier By Dave Doulton University of Southampton.

Page 1: Making ODBC easier By Dave Doulton University of Southampton.

Making ODBC easier

By

Dave Doulton

University of Southampton

Page 2: Making ODBC easier By Dave Doulton University of Southampton.

Agenda

• Introduction

• Setting up ODBC sources

• ODBC import

• ODBC pql

• ODBC members

• Conclusion

Page 3: Making ODBC easier By Dave Doulton University of Southampton.

Introduction

• ODBC Open DataBase Connectivity

• This session will show you how to set up ODBC sources and use them from SIR.

• It will show the simplest way to go about this with PQL members available from SUG website.

Page 4: Making ODBC easier By Dave Doulton University of Southampton.

Setting up ODBC sources

• ODBC sources are set up using Data Sources from the Administrative Tools Menu

• Sources can be User, available to that user only or System, available to all users both are configured in exactly the same way but from different tabs

Page 5: Making ODBC easier By Dave Doulton University of Southampton.
Page 6: Making ODBC easier By Dave Doulton University of Southampton.
Page 7: Making ODBC easier By Dave Doulton University of Southampton.

Setting up ODBC sources

• I shall show the steps in setting up some System DSNs

• I have previously set them all up as User DSNs for use in the demonstrations

• Click add on the screen shown prior to this

Page 8: Making ODBC easier By Dave Doulton University of Southampton.
Page 9: Making ODBC easier By Dave Doulton University of Southampton.

Setting up ODBC sources

• Choose the source and click Finish.

• You will then get a configuration screen which will vary according to the source.

• The next screens will show various different types

Page 10: Making ODBC easier By Dave Doulton University of Southampton.

SIR

Page 11: Making ODBC easier By Dave Doulton University of Southampton.

SIR different server

Page 12: Making ODBC easier By Dave Doulton University of Southampton.

CSV

Page 13: Making ODBC easier By Dave Doulton University of Southampton.

CSV options

Page 14: Making ODBC easier By Dave Doulton University of Southampton.

CSV Define Format

Page 15: Making ODBC easier By Dave Doulton University of Southampton.

Excel with options

Page 16: Making ODBC easier By Dave Doulton University of Southampton.

Access with options

Page 17: Making ODBC easier By Dave Doulton University of Southampton.

Access advanced options

Page 18: Making ODBC easier By Dave Doulton University of Southampton.

FoxPro with options

Page 19: Making ODBC easier By Dave Doulton University of Southampton.

dBase with options

Page 20: Making ODBC easier By Dave Doulton University of Southampton.

Paradox with options

Page 21: Making ODBC easier By Dave Doulton University of Southampton.

Oracle

Page 22: Making ODBC easier By Dave Doulton University of Southampton.

All defined

Page 23: Making ODBC easier By Dave Doulton University of Southampton.

ODBC import

• Data can be imported into a SIR database from an ODBC source very easily especially into a caseless database as there is no Case Id to worry about.

• Create a caseless database in this case TESTODBC and choose import records from the database menu

Page 24: Making ODBC easier By Dave Doulton University of Southampton.
Page 25: Making ODBC easier By Dave Doulton University of Southampton.

Choose ODBC and choose data source

Page 26: Making ODBC easier By Dave Doulton University of Southampton.

Select Source

Page 27: Making ODBC easier By Dave Doulton University of Southampton.

This gives

Page 28: Making ODBC easier By Dave Doulton University of Southampton.

Clicking Next gives:- note sheet name with a $ and a range

Page 29: Making ODBC easier By Dave Doulton University of Southampton.

Clicking Next gives

Page 30: Making ODBC easier By Dave Doulton University of Southampton.

Change record name and choose roword as sortid. This gives each row a new number

Page 31: Making ODBC easier By Dave Doulton University of Southampton.

Clicking OK creates record and imports.

Page 32: Making ODBC easier By Dave Doulton University of Southampton.

ODBC import

• This is fine if you want all the data in a database.

• But I find that I want to read a data file select some data from that file and then do something with it without storing it in another database. E.g. for running procedures on an Oracle database.

• In these cases PQL is the answer.

Page 33: Making ODBC easier By Dave Doulton University of Southampton.

ODBC pql

• The ODBC import is based on a set of pql statements.

• These seem a bit daunting at first.

• See the next screens for details.

Page 34: Making ODBC easier By Dave Doulton University of Southampton.

Connect and Disconnect

• CONNECT conid SERVER name {DATABASE name | TABFILE name} [USER name] [PASSWORD name] [PREFIX name] [UPDATE | READ] [ERROR errid]

• DISCONNECT conid [ERROR name]

Page 35: Making ODBC easier By Dave Doulton University of Southampton.

Statement, Prepare Bind Execute and Delete• STATEMENT statid CONNECT conid [ERROR name]

• PREPARE STATEMENT statid CONNECT conid {COMMAND text_expression | BUFFER buffer_name} [ERROR name]

• BIND STATEMENT statid CONNECT conid (param_no,value)

• EXECUTE STATEMENT statid CONNECT conid [ERROR name]

• DELETE STATEMENT statid CONNECT conid [ERROR name]

Page 36: Making ODBC easier By Dave Doulton University of Southampton.

An Example

See the bottom of the help on ODBC at

file:///C:/Program%20Files/SIR2002/help/visualpql_odbc.htm

Something easier would clearly be nice.

Page 37: Making ODBC easier By Dave Doulton University of Southampton.

ODBC members

• I have created a simple set of members that can be put in the sysproc ODBC family and make life a lot easier.

• It includes a simple template member as shown on the next screen

Page 38: Making ODBC easier By Dave Doulton University of Southampton.

Template

• program• call sysproc.odbc.header• compute srce=''• compute user=''• compute pwd=''• call sysproc.odbc.connect• compute qtext=''• call sysproc.odbc.loop ($C $)• write cname(1) 5e• write fields(1) 5e• call sysproc.odbc.endloop ($C $)• call sysproc.odbc.disconn• call sysproc.odbc.tail• end program

Page 39: Making ODBC easier By Dave Doulton University of Southampton.

The template filled in

• program• call sysproc.odbc.header• compute srce='1 CSV'• compute user='dcd'• compute pwd='dcd'• call sysproc.odbc.connect• compute qtext='select * from employee.csv'• call sysproc.odbc.loop ($C $)• write cname(1) 5e• write fields(1) 5e• call sysproc.odbc.endloop ($C $)• call sysproc.odbc.disconn• call sysproc.odbc.tail• end program

Page 40: Making ODBC easier By Dave Doulton University of Southampton.

A more complicated example

• program• DEFINE PROCEDURE VARIABLES ARRAYS• string ofns• call sysproc.odbc.header• execute subroutine sysproc.menu.odbclist returning(srce)

• display textbox "Enter output filename" response ok,ofns• if(ok <=0) exit program• if(srst(ofns,".csv")=0)compute ofns=ofns+'.csv'

• display textbox "Enter username" response ok,user• if(ok <=0) exit program• display textbox "Enter password" secret response ok,pwd• if(ok <=0) exit program

• call sysproc.ODBC.CONNECT• display textbox "Enter query" response ok,qtext• if(ok <=0) exit program

• call sysproc.odbc.loop | ($C $)• perform procs• call sysproc.odbc.endloop• call sysproc.odbc.disconn• call sysproc.odbc.tail• report filename=consol/sort=rnum

Page 41: Making ODBC easier By Dave Doulton University of Southampton.

before reportstring*4000 outlineopen ofn/dsnvar=ofns/write/lrecl=4000compute outline=""for k=1,cnumcompute outline=outline+'"'+trim(cname(k))+'"'if(k<cnum)compute outline=outline+','end forwrite(ofn)outlinebreak level 1, rnumdetail blockcompute outline=""for k=1,cnumifthen(exists(fields(k)))compute outline=outline+'"'+trim(fields(k))+'"'elsecompute outline=outline+'" "'endifif(k <cnum)compute outline=outline+','end forwrite(ofn) outlineend break levelafter reportclose ofnpql escape ['"c:\windows\system32\cmd" /c "start '+ofns+'" '] wait 0 minimize 1end reportend program

Page 42: Making ODBC easier By Dave Doulton University of Southampton.

An update example

• program• call sysproc.odbc.header• compute srce=''• compute user=''• compute pwd='‘• Compute utext=‘’• call sysproc.odbc.connect• call sysproc..odbc.update• call sysproc.odbc.disconn• call sysproc.odbc.tail• end program

Page 43: Making ODBC easier By Dave Doulton University of Southampton.

Update filled in

• program• call sysproc.odbc.header• compute srce=‘3 Access'• compute user=‘dcd'• compute pwd=‘dcd‘• Compute utext=‘update employee set ndepends=4’• call sysproc.odbc.connect• call sysproc..odbc.update• call sysproc.odbc.disconn• call sysproc.odbc.tail• end program

Page 44: Making ODBC easier By Dave Doulton University of Southampton.

Web access

• With slight alterations these can be used via the web as well.

• See the following example.

Page 45: Making ODBC easier By Dave Doulton University of Southampton.

programDEFINE PROCEDURE VARIABLES ARRAYSstring ofnscall sysproc.odbc.headercompute srce=cgivarpn("srce")compute user=cgivarpn("user")compute pwd=cgivarpn("pwd")call sysproc.ODBC.CONNECTcompute qtext=cgivarpn("qtext")call sysproc.odbc.loop ($C $)perform procscall sysproc.odbc.endloop ($C $)call sysproc.odbc.disconncall sysproc.odbc.tailreport filename=consol/sort=rnum

Page 46: Making ODBC easier By Dave Doulton University of Southampton.

before reportstring*4000 outlinewrite(cgi)['<h2 >Output from '+srce+'</h2>']write(cgi)['<h3 >Using query '+qtext+'</h3>']compute outline="<table border=><tr >"for k=1,cnumcompute outline=outline+'<th >'+trim(cname(k))+'</th>'end forcompute outline=outline+'</tr>'write(cgi)outlinebreak level 1, rnumdetail blockcompute outline="<tr >"for k=1,cnumifthen(exists(fields(k)))compute outline=outline+'<td >'+trim(fields(k))+'</td>'elsecompute outline=outline+'<td >&nbsp;</td>'endifend forcompute outline=outline+'</tr>'write(cgi) outlineat end blockend break levelafter reportwrite(cgi)'</table>'end reportend program

Page 47: Making ODBC easier By Dave Doulton University of Southampton.

Notes

• When using sources that can have different file extensions then use the extension in the tablename for select.

• In Excel use the sheet name with a $ or a named range

• In SIR the password can be all 4 passwords separated by commas

• i.e. userpass,company,high,high userpass can be anything but is needed always

Page 48: Making ODBC easier By Dave Doulton University of Southampton.

Conclusion

• I hope you will all have a try of these routines to speed up your access to other data.

• I know it has speeded up my development work no end.