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

在DBGrid 下,想選取多行後,複製一份至同樣的DBGrid..

答題得分者是:Fishman
iann
一般會員


發表:17
回覆:31
積分:14
註冊:2003-08-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-26 10:27:37 IP:61.31.xxx.xxx 未訂閱
各位大大.. 小弟目前是要把一個DOS下的程式,轉成WINDOWS的介面.. 而老闆要求原有的功能都要有.. 而,有一個功能我一直想不出來怎麼寫比較好.. 在DOS下,是按下F1,對該資料行做標記,然後可以按F6 複製.. 我現在碰到的問題有兩個 1.怎麼樣才能按下按鍵做標記..我看過前面的文章但是好像沒有可行的方案.. 2.如果使用滑鼠標記多行,那麼,要從原DBGRID,複製一份到這個DBGRID, 該怎麼做比較好?我指的是同一個DBGRID..不是兩個不相同的DBGRID,資料 庫用的是MDB,有設定一個欄位為自動流水號,並且設定為KEY 值。 努力學習中....
------
努力學習中....
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-26 13:49:37 IP:210.65.xxx.xxx 未訂閱
Hi iann,    複製資料方法,請參考 http://delphi.ktop.com.tw/topic.php?topic_id=47510 至於多筆複製 1.將 DBGrid1 的 Options --> dgMultiSelect 設為 True,如此即可用滑鼠配合鍵盤進行多筆選取 2.資料複製程式如下(原程式碼出自上述連結)
procedure TForm1.Button3Click(Sender: TObject);
var
  I,J : Integer;
  S : String;
  V : Variant;
  sRecFields: String;
begin
  FOR I := 0 TO DBGrid1.SelectedRows.Count - 1 DO
    BEGIN
      DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[I]));
      S := '';
      FOR J := 0 TO DBGrid1.DataSource.DataSet.FieldCount - 1 DO
          S := S   DBGrid1.DataSource.DataSet.Fields[J].FieldName   ';';
      IF S <> '' THEN Delete(S,Length(S),1);
      sRecFields := S;
      V := DBGrid1.DataSource.DataSet[sRecFields];
      DBGrid1.DataSource.DataSet.Append;
      DBGrid1.DataSource.DataSet[sRecFields] := v;
    END;
end;
希望對你有幫助! ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
iann
一般會員


發表:17
回覆:31
積分:14
註冊:2003-08-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-26 14:07:07 IP:61.31.xxx.xxx 未訂閱
感謝  Fishman 大大 !! 沒想到我用關鍵字來查是錯的...  我是用 > 努力學習中....
------
努力學習中....
系統時間:2024-06-29 4:44:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!