To display the progress of a longer sqlite-query you can use BWidget::ProgressBar (or ProgressDlg).
package require Tk package require BWidget load tclsqlite3.dll ProgressBar .p -type infinite -variable value pack .p # connect to a database sqlite db ":memory:" # add data to your database db eval "INSERT ..." # register the callback that which will be invoked every $opcodeNumber opcodes # test to find the best opcodeNumber for your application # without the update-command an error (callback requested query abort) occurs set opcodeNumber 1000 db progress $opcodeNumber { set value 1 update } db eval $longRunningQuery
Because there is no generic way to determine how long the query will run, this example uses an infinite progress bar
EE -- The reason that the error occurs without the update is documented at http://www.sqlite.org/c3ref/progress_handler.html , which states If the progress callback returns non-zero, the operation is interrupted. This feature can be used to implement a "Cancel" button on a GUI progress dialog box.
In general, update is rarely the correct solution. Replacing it with return 0 should probably work.