NB.ado wrapper NB. NB. module for data access with ADO NB. NB. REQUIREMENT NB. NB. MDAC 2.6, or above NB. http://msdn.microsoft.com/data NB. NB. USAGE NB. NB. cs=. prompt_ado_'' NB. myado=: cs&rs_ado_ NB. myado 'select * from tdata' NB. Macdonald B F D101 19590600 NB. Genereaux S F D103 19450300 NB. ... NB. Livingston P F D101 19580900 NB. Holliss D F D101 19600500 NB. NB. Author: Oleg Kobchenko 03/09/2004 NB. 03/26/2004 added boxed results; field names; throw NB. 03/28/2004 added typed results (tcols) coclass 'ado' throw=: 3 : 'jthrow_ado_=: y. throw.' NB.*prompt_ado_ v choose ado connection NB. strConnection=. prompt_ado_'' prompt=: 3 : 0 wd 'pc promptform' try. try. wd 'cc r oleautomation:DataLinks' catch. throw 'DataLinks is required' end. try. wd 'olemethod r base PromptNew' r=. wd 'oleget r temp ConnectionString' catch. throw wd 'qer' end. catcht. r=. ''[smoutput jthrow end. wd 'pclose' r ) NB.*rs_ado_ v execute SQL with ado recordest NB. result=. strConnection rs_ado_ strSQL rs=: 4 : 0 wd 'pc rsform' try. try. wd 'cc r oleautomation:ADODB.Recordset' catch. throw 'ADO is required' end. try. wd 'oleset r base ActiveConnection *',x. wd 'olemethod r base Open *',y. if. '1'=wd 'oleget r base State' do. r=. mode wd 'olemethod r base GetString 2 ',":ROWS wd 'olemethod r base Close' else. r=. 1 end. catch. throw wd'qer' end. catcht. r=. ''[smoutput jthrow end. wd 'pclose' r ) NB.*ROWS v output number of rows or _1 for all NB. ROWS_ado_=: 10 ROWS=: _1 getcollect=: 4 : 0 wd 'oleget r base ',x.,'; oleid r ',x. s=. '' for_i. i. 0". wd 'oleget r ',x.,' Count' do. s=. s,@getcollect) 'Type'"_ fcells=: <;._2@(,&TAB) ;. _2 fcols=: <@:>"1@|: @ fcells num=: ,.@(0&".)&.> isnum=: e.&2 3 4 5 6 11 14 16 17 18 19 20 21 131 139 apply=: 4 : '(,@:(x.;.2)~ (#&1)@#) y.' typed=: {&(str`num) @ isnum NB.*mode v output mode: one of str|cells|cols|tcols NB. mode_ado_=: cells_ado_ mode=: tcols NB.*str v mode: tab and CR separated string str=: ] NB.*cells v mode: cells of boxed strings cells=: fields , fcells NB.*cols v mode: row of string columns cols=: fields ,: fcols NB.*tcols v mode: sames as cols, but numerics converted tcols=: fields ,: typed@types apply fcols NB. ================================================== 0 : 0 NB. press Ctrl+R on each line in succession NB. select Microsoft Jet OLEDB, Next >> NB. Select "\system\examples\data\jdata.mdb" cs=. prompt_ado_'' myado=: cs&rs_ado_ myado 'select * from tdata' mode_ado_=: cells_ado_ myado 'select * from tdata' mode_ado_=: str_ado_ myado 'select * from tdata' myado 'create table test1 (aa char(10), bb integer)' myado 'insert into test1 (aa,bb) values (''a1'',22)' myado 'insert into test1 (aa,bb) values (''a2'',44)' myado 'select * from test1' myado 'drop table test1' )