![](/img/trans.png)
[英]Delphi TfdQuery, how to get the parameters that were passed for a query?
[英]Delphi Firedac: Wait for open TFDQuery
我正在使用帶有Firedac組件的Delphi XE2。 我有一個很奇怪的問題。 我有自定義組件,該組件使用自己的Firedac TQuery組件搜索一些數據。 奇怪的是,打開查詢后-它尚未激活。
qry.Open;
ShowMessage(BoolToString(qry.Active,True);
FunctionToDoAfter(SilentMode);
有了那部分代碼,我在消息中有“ False”。 它表明TQuery.Open方法運行某個線程來打開它。 有人可以建議我,在運行FunctionToDoAfter之后如何等待打開查詢?
此致Piotr
TLama-謝謝,那是10分 幾個月前,我添加了amAsync模式,但我認為當時並沒有實現所有功能。
現在,我在這里再次閱讀了幫助站點 ,在帶有“ while”循環的示例中,我的問題有確切的答案。
我是stackoverlflow的新手,TLama,我該如何還款? 你節省了我幾個小時:)
編輯1
按照Frazz的建議,我將嘗試從上面鏈接的源頁面復制一些信息。
FireDac具有四種執行命令的模式。 您可以在FDQuery1.ResourceOptions.CmdExecMode中進行更改。 您也可以在FdQuery1.ResourceOptions.CmdExecTimeout中設置執行命令的超時時間。
CmdExecModes是:
amBlocking-調用線程和GUI被阻塞,直到操作完成。
amNonBlocking-調用線程被阻塞,直到操作完成。 GUI沒有被阻止。
amCancelDialog-調用線程和GUI被阻塞,直到操作完成。 FireDAC顯示一個對話框,允許取消操作。
amAsync-調用線程和GUI沒有被阻止。 被調用的方法立即返回。
您可以在命令執行期間等待,方法是檢查命令狀態:
FDQuery1.ResourceOptions.CmdExecMode := amAsync;
FDQuery1.Open;
while FDQuery1.Command.State = csExecuting do begin
// do something while query is executing
end;
有6種不同的命令狀態:csInactive,csPrepared,csExecuting,csOpen,csFetching,csAborting。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.