全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:950
推到 Plurk!
推到 Facebook!

依照類別指定query的問題

尚未結案
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-24 20:39:39 IP:211.23.xxx.xxx 未訂閱
這個問題我不知道該如何正確陳述.. 是這樣的,我現在有一個函數,想依不同傳入的Query,做同樣的處理, 像ADO的TADOQuery和第三方組件Zeos的TZReadOnlyQuery,這兩個都同樣有 SQL.Text和Open的語法,所以我想寫一個函數集中處理,可是在型態上的 判別,小弟功力不夠,想請教站上各位大大的寫法,    以下是我原本的寫法,依據FQryType 來做轉型,可是這樣程式同樣的程式 就會一直重覆,又臭又長,不知道有什麼方法可解否?     
 
procedure TSMFQuery.setQry(AQry: TDataset; const ASQL: String;
  const AType: TExecType);
begin
  if ASQL = '' then exit;
  case FQryType of
    qtZeos:  begin
      with TZReadOnlyQuery(AQry) do begin
        close;
        SQL.Text := ASQL;
        try
          case AType of
            etOpen : Open;
            etExec : ExecSQL;
            etNone : ; //nothing
            etShow : Sh(ASQL);
            etDEBUG: dh(ASQL);
          end;
        except
          if Assigned(FOnError) then FOnError(Self,SQL.Text);
        end;
      end;
    end;
    qtADO : begin
      with TADOQuery(AQry) do begin
        close;
        SQL.Text := ASQL;
        try
          case AType of
            etOpen : Open;
            etExec : ExecSQL;
            etNone : ; //nothing
            etShow : Sh(ASQL);
            etDEBUG: dh(ASQL);
          end;
        except
          if Assigned(FOnError) then FOnError(Self,SQL.Text);
        end;
      end;
    end;
  end;
end;
..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-25 02:14:25 IP:211.74.xxx.xxx 未訂閱
您好..我能夠補充的就只有
if AQry is TZReadOnlyQuery then
begin
  with TZReadOnlyQuery(AQry) do
  begin
   ..
  end;
end;
感覺上你是想用TSMFQuery再包一層處理.. TZReadOnlyQuery->TZAbstractRODataset->TDataSet TADOQuery->TCustomADODataSet->TDataSet 交集的TDataSet不會有SQL屬性.. 所以這兩個必須分別轉型.. 所以就還是維持原樣吧..
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-25 10:34:00 IP:202.39.xxx.xxx 未訂閱
參考 ccchen、Justmade 大大之前的作法, 可以得到一些概念: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31373 -- 棒球是從兩出局開始的.
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-28 17:45:13 IP:211.23.xxx.xxx 未訂閱
感謝各位大大的分享。 小弟在繼續研究^_^    ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-28 17:56:21 IP:202.39.xxx.xxx 未訂閱
哇! 這 ... 小弟想這樣子大概是沒辦法簡化程式碼吧! 可以說一下您的程式為什麼要分 TADOQuery 與 TZReadOnlyQuery 來使用嗎? -- 棒球是從兩出局開始的.
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-28 18:17:20 IP:211.23.xxx.xxx 未訂閱
是這樣的。小弟因工作上的關係,常常需要把資料轉到Server的資料庫 由於資料的來源雖然千奇百怪,但是我發現用Access的轉入功的非常強大, 所以常常使用Access轉入資料源,在利用ADO連資料庫轉成SQL語法 使用TZReadOnlyQuery 來執行。    有時後需要先計算出結果在上傳,而計算的邏輯又跟一支連Mysql的程式 計算邏輯一樣,所以我才將Query包裝成一個類別。 這樣只要指定Query的Dataset可是的任意更換連線的資料庫。    小弟的表達能力不好。如果還有問題歡迎提出。 如果大大還是看不了解的話,小弟可加Post簡易的程式碼上來。        ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-28 18:19:16 IP:211.23.xxx.xxx 未訂閱
引言: 是這樣的。小弟因工作上的關係,常常需要把資料轉到Server(Mysql)的資料庫 由於資料的來源雖然千奇百怪,但是我發現用Access的轉入功的非常強大, 所以常常使用Access轉入資料源,在利用ADO連資料庫轉成SQL語法 在利用TZReadOnlyQuery 來執行上傳到Mysql資料庫。 有時後需要先計算出結果在上傳,而計算的邏輯又跟一支連Mysql的程式 計算邏輯一樣,所以我才將Query包裝成一個類別。 這樣只要指定Query的Dataset可是的任意更換連線的資料庫。 小弟的表達能力不好。如果還有問題歡迎提出。 如果大大還是看不了解的話,小弟可加Post簡易的程式碼上來。 ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁
系統時間:2024-07-03 6:57:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!