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

求救query中记录位置定位问题

尚未結案
swangyong
一般會員


發表:9
回覆:8
積分:3
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-25 12:40:51 IP:221.136.xxx.xxx 未訂閱
如果用table的话,我在中间插入几条记录,它的位置不会移动。但是我用query和updatesql,在其中插入几条记录就不会停在那个地方,要跑到最后去,或者最前面去,如果没有order by 的query也不行。我现在想在query中插入记录而不要让它动,有办法吗?
Ethan
版主


發表:101
回覆:170
積分:78
註冊:2006-07-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-25 12:45:38 IP:61.218.xxx.xxx 未訂閱
當您query.close後再加Query.refresh;就可以了,我之前也是這麼做的. 學習,從分享開始^^
swangyong
一般會員


發表:9
回覆:8
積分:3
註冊:2003-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-25 13:11:14 IP:221.136.xxx.xxx 未訂閱
好像不行,提示:can't perform the operation on the closed dataset! 能说具体点吗?谢谢!
Winifred
初階會員


發表:3
回覆:34
積分:47
註冊:2002-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-25 13:22:43 IP:61.221.xxx.xxx 未訂閱
您也可以試試看用Locate 先利用變數儲存您新增或更新的鍵值… 再搭配Locate將指標停在剛剛輸入的資料列上
swangyong
一般會員


發表:9
回覆:8
積分:3
註冊:2003-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-25 13:32:04 IP:221.136.xxx.xxx 未訂閱
哈哈!谢谢,我不是这个意思。我要求: a b 1 1 2 2 3 3 4 4 我现在就是要在记录3中插入记录后就呆在那个位置,我想在那里插入就呆在那里,不要跑到4后面了。这样当我保存的时候,我再可以统一编号就可以了。我table中就可以,为什么用cache的query就不能固定记录!
Ethan
版主


發表:101
回覆:170
積分:78
註冊:2006-07-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-25 14:54:58 IP:61.218.xxx.xxx 未訂閱
引言: 哈哈!谢谢,我不是这个意思。我要求: a b 1 1 2 2 3 3 4 4 我现在就是要在记录3中插入记录后就呆在那个位置,我想在那里插入就呆在那里,不要跑到4后面了。这样当我保存的时候,我再可以统一编号就可以了。我table中就可以,为什么用cache的query就不能固定记录!
喔,您是要可以在中間插入一行,那您可以用query DBNavigator1元件就可以了, 所以您就不用加上query.refresh 學習,從分享開始^^
swangyong
一般會員


發表:9
回覆:8
積分:3
註冊:2003-07-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-25 15:10:24 IP:221.136.xxx.xxx 未訂閱
喔,您是要可以在中間插入一行,那您可以用query DBNavigator1元件就可以了, 所以您就不用加上query.refresh 學習,從分享開始^^ [/quote] 也不行的,我用query DBNavigator1元件了,当我按加号“+”后在其中插入了,当时当我post的时候,或者光标移动走的时候,被插入的记录就又变成append了,又跑到最后去了,真是烦死人了!!!
cashxin2002
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-25 15:52:04 IP:63.84.xxx.xxx 未訂閱
引言: 也不行的,我用query DBNavigator1元件了,当我按加号“+”后在其中插入了,当时当我post的时候,或者光标移动走的时候,被插入的记录就又变成append了,又跑到最后去了,真是烦死人了!!!
您好﹗ 出現這種append的現象是因為您資料表中會以唯一索引值進行排序工作﹒ 當Query元件被Close-->Open時﹐現行資料錄的指針就會移至開頭第一筆資料﹐所以小弟在想要使用一個變通的方法來處理﹒ 在您新增資料的時候﹐在存入資料庫之前﹐可用一個變數先將這筆新資料的唯一索引值記錄起來﹐當這筆資料存入資料庫之后﹐再根据這個變數值做一句Locate﹐當完成之后回到資料表瀏覽狀態時﹐現行資料庫指針就會移至這筆新增的記錄上了﹒ P.S 寫完之后﹐發現小弟的想法和Winifred提供的建議差不多﹐這個想法應該可行﹐似乎也沒有違背您的目的﹐所以您可以先試一試再做定論﹗ <><>===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
cashxin2002
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-25 16:03:08 IP:63.84.xxx.xxx 未訂閱
您好﹗    小弟剛才用這個想法試了一下﹐也是可行的﹐如下﹕
procedure TForm1.InsertButtonClick(Sender: TObject);
var
  Remark : String;
begin
  Remark := Edit3.Text;
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Insert Into 客戶 (客戶編號) Values (''' Edit1.Text ''')';
  ADOQuery1.ExecSQL;
  ADOQuery1.SQL.Text := 'Select * From 客戶';
  ADOQuery1.Open;
  ADOQuery1.Locate('客戶編號',Remark,[]);
end;
//[客戶編號]欄位為客戶資料表的唯一索引值﹐Edit1是客戶輸入此值的方塊﹒ //Remark變數作為記錄新增資料錄之唯一索引值﹐以用于Locate查詢﹒ //當ADOQuery做完新增動作﹐并重新Open后﹐再用Locate去查詢這個變數﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
swangyong
一般會員


發表:9
回覆:8
積分:3
註冊:2003-07-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-25 16:21:41 IP:221.136.xxx.xxx 未訂閱
[quote] 您好﹗ 感谢你的热心帮助!! 我有一个query1,updatesql1,cache=true ,insert button,dbgrid1 query1.sql.text:='select * from my_table'; query1.open; 然后query1.insert 我希望我所有的insert的内容在我apply保存以前不会改变记录的位置。 但是事实上,我insert的记录就马上跑到最后了。我并不需要查询后定位记录locate.
系統時間:2024-05-19 22:01:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!