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

如何機動產生DBGRID的欄位

尚未結案
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-10 14:38:29 IP:61.66.xxx.xxx 未訂閱
主題可能說的不太清楚,意思就是假設資料庫有一檔案存了N筆紀錄 在我抓出這N筆之後,將N筆的內容轉成DBGRID的N個欄位TITLE ex. file內容如下(只有一個field) NAME ---- 取得後==>從DBGRID顯示成 A1 A2 A3 ......An A1 -------------------- A2 A3 . . An 煩請各位高手指教,謝
junlin
初階會員


發表:66
回覆:94
積分:42
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-10 19:21:08 IP:140.129.xxx.xxx 未訂閱
只有寫store procedure了 
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-11 00:52:18 IP:211.20.xxx.xxx 未訂閱
引言: 主題可能說的不太清楚,意思就是假設資料庫有一檔案存了N筆紀錄 在我抓出這N筆之後,將N筆的內容轉成DBGRID的N個欄位TITLE ex. file內容如下(只有一個field) NAME ---- 取得後==>從DBGRID顯示成 A1 A2 A3 ......An A1 -------------------- A2 A3 . . An 煩請各位高手指教,謝
Komuro 你好 你的這個需求,應該無法用DBGrid來完成,因為它還要連著DataSet,以反應DataSet的內容,要改變DBGrid最好的方法就是改變DataSet。 如果無法(或不方便),StringGrid可以讓你自由將資料以矩陣的方式陳列,我想這才是你要的吧!它有DBGrid的外觀(預設),每個儲存格(Cell)你都必須自行處理。 以下列出常用的屬性 StringGrid.ColCount := x ;//設定有幾欄 StringGrid.Row := x ;//設定有幾列 StringGrid.Cells[ACol, ARow: Integer] :='xxxxx'// 儲存格的存取 StringGrid.FixedCols:= x ;//設定左邊幾行為固定行 StringGrid.FixedRows:= x ;//設定上邊幾列為固定列 StringGrid.Cols[Index: Integer]: TStrings;//直行的存取 StringGrid.Rows[Index: Integer]: TStrings;//列的存取 ===== 以上兩種屬性滿好玩的 ========== StringGrid.Cols[0].CommaText := 'AA,bb,cc,dd' ;//將第0行由上往下依序填入'AA','bb','cc','dd'
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-12 09:38:53 IP:218.163.xxx.xxx 未訂閱
建議你一個做法, RumTime Create一個ClientDataSet, 同時依抓出之資料,在RunTime 逐一Create Field DBGrid可透過DataSource 接向此ClientDataSet, 如此應可達成目的 大致如下
  cdtemp:=TClientDataSet.Create(nil);
  i:=1;
  while not query1.eof do begin
    with cdtemp.FieldDefs.AddFieldDef do begin
      DataType := ftString;
      size:=20;
      Name := 'A' inttostr(i);  //以'A' 第幾筆record做為fieldname
    end;
    inc(i);
    query1.next;
  end;
  cdTemp.CreateDataSet;
  datasource1.dataset:=cdtemp;
  dbgrid1.datasource:=datasource1;
發表人 - ccchen 於 2004/03/12 09:43:09
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-15 08:38:18 IP:211.21.xxx.xxx 未訂閱
引言: 建議你一個做法, RumTime Create一個ClientDataSet, 同時依抓出之資料,在RunTime 逐一Create Field DBGrid可透過DataSource 接向此ClientDataSet, 如此應可達成目的 大致如下
  cdtemp:=TClientDataSet.Create(nil);
  i:=1;
  while not query1.eof do begin
    with cdtemp.FieldDefs.AddFieldDef do begin
      DataType := ftString;
      size:=20;
      Name := 'A' inttostr(i);  //以'A' 第幾筆record做為fieldname
    end;
    inc(i);
    query1.next;
  end;
  cdTemp.CreateDataSet;
  datasource1.dataset:=cdtemp;
  dbgrid1.datasource:=datasource1;
發表人 - ccchen 於 2004/03/12 09:43:09
請問 ccchen 長官 這種 ClientDataSet 是否不會產生一個實體檔案 以往我要使用 temp table 時都動態產生一個 paradox table 用完殺掉,他會真實在硬碟上產生一個 table 檔 BDE API 中說有一種 MEMORY TABLE , 但範例說明不完整 從沒測成功過 ...
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-15 23:20:31 IP:61.59.xxx.xxx 未訂閱
ccchen的寫法簡潔 but chance36的範例感覺應用上比較靈活^^
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-18 08:30:32 IP:218.163.xxx.xxx 未訂閱
引言: 這種 ClientDataSet 是否不會產生一個實體檔案 以往我要使用 temp table 時都動態產生一個 paradox table 用完殺掉,他會真實在硬碟上產生一個 table 檔 BDE API 中說有一種 MEMORY TABLE , 但範例說明不完整 從沒測成功過 ...
這種 ClientDataSet 是完全在MEMORY中的, 不會產生實體檔案, 不過你可以隨時存檔,存成 .xml或.cds均可. 使用ClientDataset其實有很多好處, 例如可以用DataSet之index功能隨時更改排序方式, 進行locate, 也可以create Aggregate欄位執行各總計算等等. 需要時更可存成實體檔案
系統時間:2024-05-14 16:37:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!