>#define AD_CONN_STRING_DEFAULT "Provider=VFPOLEDB.1;Data Source=DATA2.DBC;Password='';Collating Sequence=MACHINE;" >close databases all > >on error x = .t. >delete file data2.* >delete file hwp.* >delete file wh.* >delete file pr.* >on error > >create database data2 >create table hwp (hid i, wid i, pid i, demand i) >insert into hwp values (10,1,1,100) >insert into hwp values (10,2,1,80) >insert into hwp values (10,3,1,70) >insert into hwp values (10,4,1,60) >insert into hwp values (10,1,2,80) >insert into hwp values (10,2,2,20) >insert into hwp values (10,3,2,30) >insert into hwp values (10,4,2,50) > >create table wh (wid i, wname c(10)) >insert into wh values (10, "hub") >insert into wh values (1, "wh1") >insert into wh values (2, "wh2") >insert into wh values (3, "wh3") >insert into wh values (4, "wh4") > >create table pr (pid i, pname c(10)) >insert into pr values (1, "pr1") >insert into pr values (2, "pr2") > >close databases all > >oCA = createobject('clsCA') >oCA.RunCommand("create view vw_wp as select hid,wid,pid,demand from hwp where wid=1") >oCA.ExtractData("select * from vw_wp") >select (oCA.alias) >browse >close databases all >oCA = null > >*----------------------------------------------------- >define class clsCA as cursoradapter > > datasourcetype = 'ADO' > flags = 0 > fetchasneeded = .t. > prepared = .f. > > *-------------------------------------------------- > procedure ExtractData(cCommandText, cAlias) > > local loConnDataSource > set multilocks on > > loConnDataSource = createobject('ADODB.Connection') > loConnDataSource.ConnectionString = AD_CONN_STRING_DEFAULT > loConnDataSource.open() > > this.datasource = createobject('ADODB.RecordSet') > this.datasource.CursorLocation = 3 && adUseClient > this.datasource.LockType = 3 && adLockOptimistic > this.datasource.ActiveConnection = loConnDataSource > this.SelectCmd = cCommandText > this.Alias = iif(type('cAlias')='C' and !empty(cAlias), cAlias, sys(2015)) > > if !this.CursorFill() > for each oError in oCommand.ActiveConnection.Errors > ? oError.Description > endfor > endif > > loConnDataSource.close() > > return .t. > > endproc > > *-------------------------------------------------- > procedure RunCommand(cCommandText) > > local loConnDataSource > set multilocks on > > loConnDataSource = createobject('ADODB.Connection') > loConnDataSource.ConnectionString = AD_CONN_STRING_DEFAULT > loConnDataSource.open() > > oCommand = createobject('AdoDb.Command') > oCommand.CommandText = cCommandText > oCommand.ActiveConnection = loConnDataSource > > local loExc as Exception > try > oCommand.Execute() > catch to loExc > for each oError in oCommand.ActiveConnection.Errors > ? oError.Description > endfor > finally > endtry > > endproc > >enddefine >