[SV] (2006-06-06) Requirements: * latest `MDAC` from Microsoft * `vfpoledb` from the same source * latest [tcom] package (recent version 3.9) ---- ====== set About {based on ex09ado.tcl - ADO (ActiveX Data Objects) handling , this program has been published into the public domain.} ## tested on: WindowsXP Home, ActiveTcl 8.4.5 ## logging window pack [scrollbar .sb -orient vertical -command ".t yview"] -fill y -side right pack [text .t -yscrollcommand ".sb set"] -expand yes -fill both -side left bind all {tk_messageBox -title about -message $About} bind all "destroy ." proc log {{s ""}} {.t insert end "$s\n"; .t see end} package require tcom ## format an adDate as "YYYY-MM-DD HH:MM:SS". maybe broken. proc fmtdate adotv { # adDate - days since from 1900-01-01 UTC. # Tcl clock - seconds since from 1970-01-01 UTC. set tcltv [expr ($adotv - 25569) * 86400] scan $tcltv %dl tcltv clock format $tcltv -format "%Y-%m-%d %H:%M:%S" -gmt true } proc getdata {obj} { global sqlquery ## exec an SQL, and yield a new recordset set rs [$obj Execute $sqlquery] ## navigate the recordset for {$rs MoveFirst} {![$rs EOF]} {$rs MoveNext} { ## enumerate a Fields Collection tcom::foreach fld [$rs Fields] { switch -- [$fld Type] { 133 {set value [fmtdate [$fld Value]]} default {set value [$fld Value]} } log [format "%s: %s" [$fld Name] $value] } log } $rs Close } ## default path after full install of vfpoledb set dbdir {C:\Program Files\Microsoft Visual FoxPro OLE DB Provider\Samples\Northwind} ## valid vfpoledb statement set sqlquery "select * from Employees" if {[catch { ## get an ADO Connection instance set conn [::tcom::ref createobject ADODB.Connection] ## conn setup in 'DSN-less' style $conn Provider "VFPOLEDB.1" $conn Open $dbdir } errmsg]} { log $errmsg } else { getdata $conn catch {$conn Close} } ====== <> Application | Windows