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

DBGrid 新增資料與顯示的問題

缺席
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-03 15:58:55 IP:210.201.xxx.xxx 未訂閱
各位前輩 請教二個問題。假設我有四個TEdit元件、一個DBGrid並一個確認按鈕 .. 1. 如何在這四個欄位裡輸入我所要的資料後 .. 點選確認按鈕,此時可以在DBGrid中出現一筆剛輸入在四個TEdit元件內的值。 2. 當我再輸入新的值的時候點選確認按鈕,此時非但可以在DBGrid中出現一筆剛輸入在四個TEdit元件內的值,而且所顯示的位置永遠都是在第一筆 .. 也就是最後輸入的資訊永遠都會秀在最 Top 的地方。 謝謝。
------
我也在努力學習中,若有錯謬請見諒。
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-03 16:28:13 IP:211.75.xxx.xxx 未訂閱
參考一下 你可以多開一個欄位 紀錄序號 然後先在存檔之前 先去找出以往最大的序號然後加1 存檔後 query 依照序號做desc open 這樣你最後輸入的資訊永遠都會秀在最 Top 的地方 暸嗎 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-03 16:42:34 IP:210.201.xxx.xxx 未訂閱
T.J.B 謝謝您熱心的回應 應該這麼說吧 .. 在 DBGrid 上所顯示的資料並非來自資料庫,只是單純的去記錄在這一次的使用中總共輸入了幾筆,換句話說在點選確認的同時已將該筆資訊寫入資料庫了,在 DBGrid 上所顯示的資料只是單純的讓使用者知道該筆有被寫入,其實當程式下次再開啟的時候,DBGrid上所顯示的資料是空白的,因為它只做當下的確認和顯示並不去撈資料庫裡的資料。
------
我也在努力學習中,若有錯謬請見諒。
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-03 16:44:38 IP:211.75.xxx.xxx 未訂閱
        exp: 確認鈕作的事 主query 為 mainQ 也就是  (clientDataSet)     先找出最大序號 用query1去找 select max(序號) from tablename  where ....... and .......    有找到..
seno := query1.fieldbyname('序號').asinteger 1;         
mainQ.append;
mainQ.fieldbyname('序號').asinteger := seno ;
mainQ.fieldbyname('a').as(型態) := edit1.text ;
mainQ.fieldbyname('b').as(型態) := edit2.text ;
mainQ.fieldbyname('c').as(型態) := edit3.text ;
mainQ.fieldbyname('d').as(型態) := edit4.text ;
mainQ.post;    with mamainQ do
begin
  // 下sql 做 desc 反向排序
  open;
end;
這樣就可以了 沒try 過 自己試試看 依照你的需求做修改 ~~~~~~~~~~~~~ (厚~~~~~~~~ 不講清楚 打了很多字ㄝ 不想重打 ) 天行健 君子當自強不息~~@.@ 發表人 -
------
天行健
君子當自強不息~~@.@
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-03 17:24:27 IP:210.201.xxx.xxx 未訂閱
T.J.B 謝謝您熱心的回應 是我的表達有問題嗎?我覺得我一直在強調的是DBGrid的資料並非來自資料庫,只是單純的收取從TEdit元件而來的資訊,並且加入到DBGrid的顯示方式是最新的資料放在最上面,如此而已,與資料庫無關,請不要再提供以 Query 元件下語法排序的處理方式了,謝謝。
------
我也在努力學習中,若有錯謬請見諒。
Fishman
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-03 17:39:38 IP:210.65.xxx.xxx 未訂閱
Hi adonis,    DBGrid 不是只顯示 DataSource 的資料嗎? 你可以開一個空的 DataSet,再對它 Append 或是 Insert 資料即可
procedure TForm1.FormCreate(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL := 'SELECT * FROM YOURTABLE WHERE 1=2';
  Query1.Open;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
    begin
      First;
      Insert;
      FieldByName('field1').AsString := Edit1.Text;
      FieldByName('field2').AsString := Edit2.Text;
      FieldByName('field3').AsString := Edit3.Text;
      FieldByName('field4').AsString := Edit4.Text;
      Post;
    end;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-04 09:52:57 IP:210.201.xxx.xxx 未訂閱
Fishman 謝謝您熱心的回應 .. 可能是我表達的不好吧。但是還是謝謝你們熱心的回應。在還沒有看到您的回應時我也想到了處理的相關機制 .. 沒錯就是透過空的 DataSet 來處理,而背後主要上傳資訊的 DataSet 則單純的負責當下資料的上傳作業。如此即可達成使用者所提的需求。 而負責顯示當下作業資訊的 DataSet 只單純在 Cache 中作業並不讓其 Update即可。 謝謝。 發表人 - adonis 於 2005/02/04 09:57:36
------
我也在努力學習中,若有錯謬請見諒。
系統時間:2024-07-01 19:16:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!