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

Ado/Access/有PK在新增時無法排序

答題得分者是:longsanglin
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-27 20:11:39 IP:61.223.xxx.xxx 未訂閱
各位前輩: 小弟原先用BDE Paradox DBGrid。當Paradox-Table有PrimaryKey時,Query1.Insert/Post後會『自動依PK重新排DBGrid的顯示次序』。最近小弟學者用AdoQuery/DBGrid/Access/表有主索引,作AdoQuery1.Insert/Post新增成功後DBgrid並無法『自動依PK重新排DBGrid的顯示次序』,且會固定加在最底部。如PK為10,20,30,40,50,此時如新增15,依預期Post後應10,15,20,30,40,50。但實際為10,20,30,40,50,15 為什麼不像BDE/Paradox一般?試了好幾天了。 請各位前輩指點一下。 謝謝。
longsanglin
初階會員


發表:10
回覆:57
積分:43
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-27 20:19:14 IP:211.22.xxx.xxx 未訂閱
我試過並不會有此狀況. 你有使用Batch方法嗎? 如有的話! 是否新增資料後有BatchUpdate ?
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-27 20:30:10 IP:61.223.xxx.xxx 未訂閱
longsanglin 前輩: 小弟這是單表格的ADE,沒有用到BatchUpdate、也沒用到交易。小弟是用Delphi5。ADO剛才才更新Update2。 現在這種不會自動依PK排序,而固定加在尾巴的情況除非我Close/Open才會依PK排序。 我下ReFresh也沒用。 現在這種當然是很難對客戶交待的。 請幫忙。謝謝。 初用ADO及Access的痛苦新鮮人。
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-27 20:36:48 IP:61.216.xxx.xxx 未訂閱
如果是Access的話,你檢查一下Table可能有一各叫識別碼的欄位,把他刪除掉應該就可以了.. TRY TRY SEE
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-27 20:41:18 IP:61.10.xxx.xxx 未訂閱
我自己沒用 ADO 所以不很清楚,但請問你 Query 有 order by PK 嗎? 另你有試過 adoquery1.indexfields[0] := PKField 有用嗎? 我不知能否這樣做我亦沒 Access 去試所以只是給你參考一下。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-27 20:45:48 IP:61.223.xxx.xxx 未訂閱
>>識別碼的欄位 謝謝前輩,小弟這個檔建時有設定第一欄為PK﹝即左方有支鑰匙﹞,所以沒有這個會搗蛋的識別碼欄。 苦惱的ADO/Access新鮮人,謝謝。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-27 20:49:25 IP:61.223.xxx.xxx 未訂閱
謝謝前輩。 >>請問你 Query 有 order by PK 嗎? 小弟也試過在 ==>AdoQuery.SQL有設 Select * from MyTable order By PKField 可是沒用。 >>另你有試過adoquery1.indexfields[0] := PKField 小弟試試看。 謝謝。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-27 20:59:34 IP:61.223.xxx.xxx 未訂閱
小弟在AdoQuery.SQL有設Select * from MyTable order by MyPkField 及在FormActive中有下測試碼: ShowMessage(IntToStr(AdoQuery1.IndexFieldCount ) ) ; 結果此值為零。小弟比較熟BDE對IndexFieldCount是第一次用,這值為零是否意謂些什麼? 試的人的心臟病都要起來了。請各位前輩幫忙。謝謝。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-27 21:13:59 IP:61.223.xxx.xxx 未訂閱
原先在BDE/Query/PK/DBGrid是沒問題的,為什麼在Ado/Access會如此? 頭痛。
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-27 21:19:34 IP:203.204.xxx.xxx 未訂閱
MorganBoy, 您好 請問您一定要使用ADOQuery嗎?可否使用ADOTable?我之前有用過ADOTable也碰過您的情形,但只要設定IndexFieldNames屬性即可解決您的問題。這個方法供您參考看看!    ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-27 21:38:09 IP:61.223.xxx.xxx 未訂閱
小弟剛才試改用AdoTable也是不行。 剛才試改用 DBDemos.mdb也是不行。 唉。
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-27 21:48:47 IP:203.204.xxx.xxx 未訂閱
引言: 小弟剛才試改用AdoTable也是不行。 剛才試改用 DBDemos.mdb也是不行。 唉。
那就奇怪了,我試過ADOTable可以啊!IndexFieldNames屬性輸入您的PrimaryKey欄位即可。還是您的Access檔案有問題? ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-27 21:54:04 IP:61.223.xxx.xxx 未訂閱
>>還是您的Access檔案有問題? 小弟剛才試過DBDemos.mdb,也是不行。 小弟試過AdoQuery/AdoTable/AdoDataSet,都不行, 是不是我乾脆另外寫Code自己來控制算了? 我想一定是我的ADE碼有問題,我是抄我原先BDE的Form過來改的。不過,除了羅輯外關於Ado的我應該都改好了阿?
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-05-27 22:08:26 IP:203.204.xxx.xxx 未訂閱
用ADOTable的話,不用寫code就可以測試了,用一個TDBNavigator元件、一個TADOTable元件、一個TDBGrid元件、一個TDataSource元件,設定好所有關聯,記得TADOTable元件的IndexFieldNames屬性輸入您的PrimaryKey欄位,然後將Active屬性設為true,就OK了,您試試看吧!再不行,就得看看其他前輩先進們有無好方法了。    ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-05-27 22:23:41 IP:61.223.xxx.xxx 未訂閱
我認輸了。我剛才換試ado/Paradox且是很單純環境也是如此。 是我的ADO/D5嗎?
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-05-27 22:26:53 IP:61.223.xxx.xxx 未訂閱
認輸了,認輸了,我還是去看陳文茜的節目算了。已經花了我好幾天了。 認輸,認輸。 很謝謝前輩們熱心幫忙。 謝謝。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-05-27 22:49:01 IP:61.223.xxx.xxx 未訂閱
承Tech_State版主及longsanglin前輩及Chih前輩及JustMade版主如此熱心幫小弟,可是小弟實在是因為已試了好幾個小時試的有點昏頭了,想想只有認輸,結案算了。幾位前輩提攜後進,熱心幫忙,小弟銘感五內。得分原想全選,但試了老半天只能單選,實在為難。後選Tech_State版主,但因不小心滑鼠多滾了一下...,真是太太失禮了。不過,老實說,我試這個問題是已試了好幾天,人都有點試秀斗了,各位前輩盛情,小弟點滴感激在心。不論那位前輩,小弟都非常非常感激。而Tech_State版主跟小弟一起試了三個小時,小弟實在萬分感激。 只有多說幾聲謝謝了。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-05-29 00:25:49 IP:61.223.xxx.xxx 未訂閱
小弟今天用ADO/Paradox/PK發現沒這個問題。這應該是表示: 1.ADO沒問題。 2.BDE可,但Access不行,表示問題出在Access 小弟思考如下: 1.反正這些表空通常至多兩三百筆資料,我就再下AdoQuery1.Close/Open及Locate就好了。 結果==>OK,反應速度可以接受。 問題解決了,管他。 很謝謝各位前輩陪小弟一起來解決這個問題。感謝,感謝。
系統時間:2024-05-18 12:14:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!