#!/usr/bin/pgtksh proc doClear {} { global field1 field2 field3 field4 field5 for {set j 1} {$j <= 5} {incr j} { set field$j "" } } proc doNext {} { global conn res loid curoid global field1 field2 field3 field4 field5 set x [llength $loid] incr x -1 set j [lsearch -exact $loid $curoid] if {$j >= $x } { set j $x } else { incr j } set curoid [lindex $loid $j] set res [pg_exec $conn "select *,oid from schedule where oid = $curoid"] set list [pg_result $res -getTuple 0] pg_result $res -clear for { set i 1} {$i <= 5} {incr i} { set j $i set j [incr j -1] set field$i [lindex $list $j] } set curoid [lindex $list 5] } proc doLast {} { global conn res loid curoid global field1 field2 field3 field4 field5 set x [llength $loid] set j [lsearch -exact $loid $curoid] if {$j <= 0 } { set j 0 } else { incr j -1 } set curoid [lindex $loid $j] set res [pg_exec $conn "select *,oid from schedule where oid = $curoid"] set list [pg_result $res -getTuple 0] pg_result $res -clear for { set i 1} {$i <= 5} {incr i} { set j $i set j [incr j -1] set field$i [lindex $list $j] } set curoid [lindex $list 5] } proc doExit {} { global conn pg_disconnect $conn exit } proc doQuery {} { global conn loid curoid global field1 field2 field3 field4 field5 if {[string length $field3] > 0 } { set res [pg_exec $conn "select *,oid from schedule where program = \'$field3\'"] } else { set res [pg_exec $conn "select *,oid from schedule where oid = [lindex $loid 0]" ] } set list [pg_result $res -getTuple 0] pg_result $res -clear for { set i 1} {$i <= 5} {incr i} { set j $i set j [incr j -1] set field$i [lindex $list $j] } set curoid [lindex $list 5] } proc openSocket {} { global conn set conn [pg_connect -conninfo "host=crabapple dbname=jim user=jim"] } proc doDelete {} { global conn curoid set res [pg_exec $conn "delete from schedule where oid = $curoid" ] pg_result $res -clear doClear Initialize } proc doUpdate {} { global conn curoid global field1 field2 field3 field4 field5 set res [pg_exec $conn "update schedule set days = \'$field1\', \ time = \'$field2\',program = \'$field3\',checkprog = \'$field4\', \ didrun = \'$field5\' where oid = $curoid "] pg_result $res -clear } proc Initialize {} { global conn loid set res [pg_exec $conn "select oid from schedule"] set ntups [pg_result $res -numTuples] catch [unset loid] result for {set i 0} {$i < $ntups } {incr i} { lappend loid [pg_result $res -getTuple $i] } set curoid [lindex $loid 0] pg_result $res -clear } proc doAdd {} { global conn field1 field2 field3 field4 field5 set res [pg_exec $conn "insert into schedule values (\'$field1\', \ \'$field2\',\'$field3\',\'$field4\',\'$field5\') "] pg_result $res -clear Initialize } proc makeWindow {} { global conn set fo1 -*-fixed-bold-r-*-*-16-*-*-*-*-*-*-* set fo2 -*-courier-bold-r-*-*-16-*-*-*-*-*-*-* set colour grey frame .f1 pack .f1 -anchor nw label .f1.l1 -text " Days" -font $fo1 entry .f1.e1 -width 7 -relief sunken -bd 2 -textvariable field1 -font $fo2 pack .f1.l1 .f1.e1 -side left frame .f2 pack .f2 -anchor nw label .f2.l2 -text " Time" -font $fo1 entry .f2.e2 -width 5 -relief sunken -bd 2 -textvariable field2 -font $fo2 pack .f2.l2 .f2.e2 -side left frame .f3 pack .f3 -anchor nw label .f3.l2 -text " Program" -font $fo1 entry .f3.e2 -width 50 -relief sunken -bd 2 -textvariable field3 -font $fo2 pack .f3.l2 .f3.e2 -side left frame .f4 pack .f4 -anchor nw label .f4.l2 -text "Check Program" -font $fo1 entry .f4.e2 -width 50 -relief sunken -bd 2 -textvariable field4 -font $fo2 pack .f4.l2 .f4.e2 -side left frame .f5 pack .f5 -anchor nw label .f5.l2 -text " Didrun" -font $fo1 entry .f5.e2 -width 1 -relief sunken -bd 2 -textvariable field5 -font $fo2 pack .f5.l2 .f5.e2 -side left frame .f6 pack .f6 -anchor nw button .f6.b1 -text "Query" -command doQuery button .f6.b2 -text "Next" -command doNext button .f6.b3 -text "Previous" -command doLast button .f6.b4 -text "Add" -command doAdd button .f6.b5 -text "Delete" -command doDelete button .f6.b6 -text "Update" -command doUpdate button .f6.b7 -text "Clear" -command doClear button .f6.b8 -text "Exit" -command doExit pack .f6.b1 .f6.b2 .f6.b3 .f6.b4 .f6.b5 .f6.b6 .f6.b7 .f6.b8 -side left } ################### # Main proc ################### wm title . "Schedule Maintenance" wm geometry . 500x200+10+10 openSocket Initialize makeWindow