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

主从表新增纪录问题

尚未結案
hz_toney
一般會員


發表:3
回覆:1
積分:0
註冊:2003-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-31 19:29:24 IP:218.72.xxx.xxx 未訂閱
现有两张表: 主表 goods Goodsid 自增长型标识 Goodsname Varchar(20) 从表 picture Goodsid GoodsPicture bin 在程序中分别有 Adodataset1 对应 主表 Commandtext='select * from goods ' Adodataset2 对应 从表 Commandtext='select * from picture ' adodataset2.datasource=adodataset1 masterfields=goodsid 问题是在新增纪录时如何取到自增的goodsid给从表? 如果要在事务保护中新增该如何处理? 發表人 - hz_toney 於 2003/08/31 19:50:41
shuke
一般會員


發表:1
回覆:1
積分:0
註冊:2003-09-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-03 18:01:21 IP:211.156.xxx.xxx 未訂閱
俺一般這樣處理,打開主表,新增記錄,這時主表會自動拿到goodsID,輸入 GoodsName後,對主表進行post操作,這樣主表中就存在這個記錄了,並且當前記錄就是該記錄,然後打開從表,新增記錄,此時從表的goodsID將自動從主表獲得,剩下你就該幹嘛幹嘛就行了。
hz_toney
一般會員


發表:3
回覆:1
積分:0
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-06 13:15:09 IP:218.72.xxx.xxx 未訂閱
如果主表/从表的纪录新增需要在一个事务中保护呢? 如果主表新增后,客户因为某种原因cancel本次操作,是不是需要delete 该id号?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-06 14:28:40 IP:63.84.xxx.xxx 未訂閱
您好﹗    從表中的goodsid不是自增長型標識吧﹒若是如此﹐請參考如下﹕ 在主表新增資料的時候﹐將Goodsid欄位值指定給一個相同形態的變數﹐當主表Post正确無誤時(AfterPost Event)﹐就在從表中也新增一筆資料﹐從表的goodsid欄位值就從那個變數中取得﹐如果主表Post有誤﹐或者使用者取消(Cancel)這筆資料新增﹐從表就不做新增動作﹒    這樣就不需要考慮是否要去刪除從表中的不正确新增資料錄﹐在一個事務中就可以完成主從資料表的工作﹒    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/08 11:26:42
------
忻晟
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-06 18:14:12 IP:63.84.xxx.xxx 未訂閱
您好﹗    Exp for your question: ADOQuery1(主表goods): DBEdit1(Goodsid); DBEdit2(Goodsname) ADOQuery2(從表picture) For Insert ADOQuery3(從表picture) For Browse ===================================================================== ADOQuery1.AfterPost Event
begin  
  MyGoodid := DBEdit1.Text; 
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('Insert Into picture Goodsid Values ');
  ADOQuery2.SQL.Add('''' DBEdit1.Text '''');
  ADOQuery2.ExecSQL;
  ADOQuery3.Close;
  ADOQuery3.SQL.Clear;
  ADOQuery3.SQL.Add('Select * From picture');
  ADOQuery3.Open;
end;
===================================================================== Please use ADOQuery, Because: TADODataSet is not capable of issuing Data Manipulation Language (DML) SQL statements that do not return result sets (like DELETE, INSERT, and UPDATE). For this use a component like TADOCommand or TADOQuery. 其大意是說:TADODataSet不支援使用DELETE, INSERT, and UPDATE的SQL語法,若要使用這些語法,請使用TADOCommand or TADOQuery。 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-07-01 20:43:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!