線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1724
推到 Plurk!
推到 Facebook!

如何動態控制Tquery或TSQLQuery元件

缺席
mnsf
初階會員


發表:104
回覆:90
積分:48
註冊:2003-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-17 09:05:04 IP:61.30.xxx.xxx 訂閱
假設我要執行一個SQL指令,當User勾選連結Local端時,是用TSQLQuery去執行指令,
當User勾選連結Server端時,是用TQuery去執行指令,
想要請教一下,有什麼方法可以只寫一段程式,而不用寫兩段程式呢?

假設Chbx_Local.Checked=true表示要連結Local端
假設Chbx_Server.Checked=true表示要連結Server端

//以下是用最笨最簡單的方法,將程式寫成兩段,請問,有辦法寫成一段嗎?
if Chbx_Local.Checked=true then
begin
SQLQuery1.close;
SQLQuery1.sql.clear;
SQLQuery1.sql.add('SELECT * FROM TABLE1 ');
SQLQuery1.open;
end
else if Chbx_Server.Checked=true then
begin
Query1.close;
Query1.sql.clear;
Query1.sql.add('SELECT * FROM TABLE1 ');
Query1.open;
end;
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-17 10:48:03 IP:211.72.xxx.xxx 訂閱
因 Calss 不同, 很難以 subroutine 處理.
若用 Query1 與 Query2, 便可用 procudure ReOpen(QuerySelect : TQuery) 處理.
mnsf
初階會員


發表:104
回覆:90
積分:48
註冊:2003-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-17 10:56:34 IP:61.30.xxx.xxx 訂閱
大大你好,因為要讓User選擇是不是離線作業,如果是離線作業,就要連到本機的Database,
如果是非離線作業,就要連到Server端的Database,
因為那段SQL指令很冗長,所以不想寫成兩段,所以才會提問,
如果沒有方法,也沒有關係,只好塗法練鋼了,謝謝你。
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-17 17:34:07 IP:203.79.xxx.xxx 訂閱
如 herbert2 大大講的,因 Calss 不同, 很難以 subroutine 處理.

但你若不想把SQL寫成兩段,不是把 SQL獨立出來就好了

SQLStr:='SELECT * FROM TABLE1 ';

if Chbx_Local.Checked=true then
begin
?? SQLQuery1.close;
?? SQLQuery1.sql.clear;
?? SQLQuery1.sql.add(SQLStr);
?? SQLQuery1.open;
end
else if Chbx_Server.Checked=true then
begin
???Query1.close;
?? Query1.sql.clear;
?? Query1.sql.add(SQLStr);
?? Query1.open;
end;




===================引 用 mnsf 文 章===================
假設我要執行一個SQL指令,當User勾選連結Local端時,是用TSQLQuery去執行指令,
當User勾選連結Server端時,是用TQuery去執行指令,
想要請教一下,有什麼方法可以只寫一段程式,而不用寫兩段程式呢?

假設Chbx_Local.Checked=true表示要連結Local端
假設Chbx_Server.Checked=true表示要連結Server端

//以下是用最笨最簡單的方法,將程式寫成兩段,請問,有辦法寫成一段嗎?
if Chbx_Local.Checked=true then
begin
?? SQLQuery1.close;
?? SQLQuery1.sql.clear;
?? SQLQuery1.sql.add('SELECT * FROM TABLE1 ');
?? SQLQuery1.open;
end
else if Chbx_Server.Checked=true then
begin
???Query1.close;
?? Query1.sql.clear;
?? Query1.sql.add('SELECT * FROM TABLE1 ');
?? Query1.open;
end;
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-09-18 09:27:11 IP:203.75.xxx.xxx 未訂閱
如果是使用firebird emb + server同時併存,就可以用TSQLQuery一個來處理了
遠端連線和離線問題同時解決。
系統時間:2024-04-26 22:32:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!