我正在使用一个相对复杂的查询来查询一个 firebird 数据库,该查询需要一段时间才能执行,并认为如果用户可以获得有关查询进度的某种形式的反馈会很有帮助。我打算在查询开始时在状态栏上显示合适的“请稍候”消息,并在查询返回其数据时清除状态栏。
我正在使用 TSQLDataSet、TDataSetProvider 和 TClientDataSet;哪个事件将在哪个组件中触发,表示查询已完成并且数据已准备好显示?
TIA,诺姆
我正在使用一个相对复杂的查询来查询一个 firebird 数据库,该查询需要一段时间才能执行,并认为如果用户可以获得有关查询进度的某种形式的反馈会很有帮助。我打算在查询开始时在状态栏上显示合适的“请稍候”消息,并在查询返回其数据时清除状态栏。
我正在使用 TSQLDataSet、TDataSetProvider 和 TClientDataSet;哪个事件将在哪个组件中触发,表示查询已完成并且数据已准备好显示?
TIA,诺姆
查看 TClientDataset 的 BeforeExecute 和 AfterExecute 事件。它们似乎符合您的需要。
如果您需要 UI 在处理查询时做出响应,您可以查看 ProcessMessagess 或在单独的线程中执行查询并使用 OnTerminate 将检索到的数据传送到表单。
由于这与 UI 相关(显示消息),我可能会使用 TClientDataSet 的 AfterOpen 事件。
回想起来,很抱歉我发布了这个问题,因为答案非常简单,与事件无关。这是我的简单解决方案。
statusbar1.simpletext:= 'Opening query';
qComplicated.open;
statusbar1.simpletext:= '';
当查询返回其数据时,程序控制移至查询打开后的语句,这将清除状态栏。
我向那些回答的人道歉。