参考までにCurlからActiveX経由でAccessのMDBを読むサンプルです。
使用しているMDBは
http://developers.curlap.com/gallery/apps/104
こちらのものを使用しています。SQLServerについてもこれを応用すればできると思います。
Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
{import * from CURL.GRAPHICS.ACTIVEX}
|| MDBのテーブル名
{let names:StringArray = {StringArray "name", "address", "phone", "number", "amount"}}
|| RecordSetのフィールド名
{let domains:StringArray = {StringArray "String","String", "String", "int", "int"}}
|| RecordSetのRecordField配列生成
{let fields : {Array-of RecordField} = {{Array-of RecordField}}}
{for i:int=0 below names.size do
let domain: Domain = {Domain.from-type {evaluate domains[i]}}
{fields.append {RecordField names[i],domain = domain,caption=names[i],nullable? = true}}
}
|| ADOのオープン
{let cn:ActiveXObject = {ActiveXObject ClsId = |"{00000514-0000-0010-8000-00AA006D2EA4}"|}}
|| Accessのファイル名を指定
{let mdb-file-url:Url = {url "sampledb.mdb"}}
{let cnstr:String = "Driver=\{Microsoft Access Driver (*.mdb)\};Dbq=" & mdb-file-url.local-filename} || Accessの場合
||{let cnstr:String = " Driver=\{SQL Server\};Server=testsv01;Database=testdb;Uid=foo;Pwd=pass;" } || SQLServerの場合
{cn.Open cnstr}
|| SQLの実行
{let sql:String = "SELECT name,address,phone,number,amount from testdb;"}
{let rs:ActiveXObject = {cn.Execute sql}}
|| データ格納
{let rds : {Array-of RecordData} = {{Array-of RecordData}}}
{while {rs.EOF} == false do
let rd : RecordData = {RecordData}
{for i:int=0 below fields.size do
|| {output {rs.Fields names[i]}.Value}
let val:any = {rs.Fields names[i]}.Value
{switch fields[i].domain.type
case String do
set rd[ fields[i].name] = val
case int do
set rd[ fields[i].name] = val
}
}
{rds.append rd}
{rs.MoveNext}
}
{rs.Close}
{cn.Close}
{rs.destroy-object}
{cn.destroy-object}
|| RecordField配列とRecordData配列を利用してRecordSetを生成
{let rsg : RecordSet = {RecordSet {RecordFields {splice fields}}, {splice rds} } }
|| レコードグリッドの定義
{let rg:RecordGrid = {RecordGrid width=16cm, height = 6cm, record-source = rsg } }
|| 画面表示
{value rg }