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.