線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1306
推到 Plurk!
推到 Facebook!

关于DBGrid的奇怪问题????急!!!急!!!急!!!

尚未結案
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-23 13:01:56 IP:218.88.xxx.xxx 未訂閱
我是一个菜鸟,最近在做数据输入时,遇到一个很奇怪的问题:我用的控件是:一个DBgrid,一个Ttable,一个Tdatasource,5个Tbutton,分别是“增加”,“删除”“保存”“刷新”和“退出”按钮。问题的表现:当用户在DBGrid里面录入数据时,录入完毕以后,用户不点“保存”按钮,而是用鼠标点一下上一行的内容,这时,奇怪的现象出现了:DBGrid里面的数据马上双倍显示(未点鼠标前只有两行数据,但是点了鼠标以后DBGrid里面就出现了四条数据),但是当点击“刷新”按钮时,DBGrid里面的显示就恢复正常!这是什么原因呢?怎么处理才不会出现这种情况?
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-23 13:27:22 IP:63.84.xxx.xxx 未訂閱
您好!    聽您的敘述真的是怪現象喔! 為何會這樣小弟也不清楚, 因為并未遇到跟您相同的情況, 至于解決的方法, 小弟覺得可以在Table的AfterPost事件中寫入:  Table1.Close; Table1.Open; 這樣的話, 無論資料庫以何方式進行Post方法, 在Post之后即可以Close和Open的方法重新開啟資料庫, 以取得最新的資料. 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-23 15:03:22 IP:218.88.xxx.xxx 未訂閱
谢谢,不过我有一个疑问,这样频繁的打开关闭表,如果遇到这张表很大的话,那么打开和关闭表的时候有可能要花几秒钟的时间,这样造成了资源的烂费,而且还会让操作员误认为死机了? 会不会出现我想的那种情况呢?
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-23 15:45:31 IP:63.84.xxx.xxx 未訂閱
您好﹗    當使用BDE方法來連結資料庫時﹐要保証資料異動真正存入到資料庫中﹐最好最有效的方法還是使用Close和Open的方法﹒    您所說的情況一定會存在﹐資料太多的時候做Close和Open的動作﹐當然會有效率影響的問題﹐另外還有一個缺點就是﹐當做完Close和Open的動作后﹐指針就會移到當前資料表的第一筆資料了﹐如果是從成千上萬的資料表中﹐突然移到資料表的首筆﹐當然會有一些目瞪口呆的詫异啦﹒    有一些變通的方法﹐如果是BDE連接的話﹐您可以參考使用BDEClientDataSet來代替Table元件﹐它可以將資料移至快取區﹐在沒有真正存入資料庫的時候﹐都是在快取區內做異動﹐當然速度就會快許多﹐存入資料庫方法為ApplyUpdates(-1)    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-23 17:27:08 IP:218.88.xxx.xxx 未訂閱
可是,我没有用过BDEClientDataSet,有没有这方面的资料? 谢谢!
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-23 17:52:21 IP:63.84.xxx.xxx 未訂閱
您好﹗    BDEClientDataSet元件在BDE元件頁次(通常是此元件頁的最后一個)﹒ 簡單使用步驟﹕ 1﹒在Form中加入一個Database元件﹐正确設定其AliasName和DatabaseName﹐將Connected屬性值設為True﹐連接上資料庫﹔ 2﹒在Form中加入一個BDEClientDataSet元件﹐將其DBConnection屬性值設為第一步中設定完成的Database元件﹔ 3﹒雙擊BDEClientDataSet元件的CommandText屬性﹐出現Command Text Editor對話方框﹐您可以右方的SQL輸入框中直接輸入SQL敘述(比如﹕Select * From 資料表名)﹐也可利用左邊的Tables選項和Fields選項﹐采用選擇的方式在右方SQL輸入框中生成對應的SQL敘述﹐完成敘述后﹐按[确定]退出﹒ 4﹒第3步中的SQL敘述無誤﹐此時可將BDEClientDataSet元件的Active屬性值設為True﹐即正常通過Database連接上資料庫﹒ 5﹒后面的步驟与使用Table或Query資料集元件相同﹐在Form中分別加上DataSource元件和對應的資料感知元件﹐并將資料感知元件連接上DataSource即可﹒    其實BDEClientDataSet的操作方法与Table或Query資料集元件大同小異﹐您可以把它當作是Table或Query元件來使用﹐唯一需要注意的就是其所有的資料異動都是在快取區內﹐即使是Post或者是Delete的方法﹐也只是針對快取區內的資料﹐后方的資料庫并未變動﹐若要真正存入到資料庫﹐必須使用如下方法﹕ DBEClientDataSet1.ApplyUpdates(-1); //(-1)參數表示更新時可以接受的錯誤次數為無限制﹒ //若改為(0)參數﹐則表示更新時不允許任何錯誤發生﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-25 11:43:46 IP:218.88.xxx.xxx 未訂閱
有没有这方面的列子呢? 发点给我?谢谢! 我的邮箱railgunman@163.com
cashxin2002
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-25 14:13:33 IP:63.84.xxx.xxx 未訂閱
您好﹗    小弟擬寫了一個簡單範例﹐寄至您提供的MailAddress中﹐有關其中連接方法和操作方法﹐請參考小弟上篇的說明﹒    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-26 10:03:35 IP:218.88.xxx.xxx 未訂閱
师兄,实在不好意思!我这边没有你说的那个控件,怎么办呢?不能看你的源程序啊我用的是
cashxin2002
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-26 10:10:22 IP:63.84.xxx.xxx 未訂閱
您好﹗    小弟用的是Delphi6.0﹐也沒有如您說的安裝過第三方控件﹒ 雖然小弟沒有用過Delphi7.0﹐但應該也是有BDEClientDataSet這個元件啊﹐在BDE元件頁中找找﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
code6421
版主


發表:43
回覆:223
積分:208
註冊:2002-08-16

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-09-26 14:11:49 IP:61.216.xxx.xxx 未訂閱
引言: 小弟用的是Delphi6.0﹐也沒有如您說的安裝過第三方控件﹒ 雖然小弟沒有用過Delphi7.0﹐但應該也是有BDEClientDataSet這個元件啊﹐在BDE元件頁中找找﹗
BDEClientDataSet is not available in DELPHI 7, you can use SimpleClientDataSet(in dbExpress Page) or ClientDataSet. however,you can provides a primary key of table to avoid duplicate records. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421 發表人 - code6421 於 2003/09/26 14:22:41
------
Just codeing...
系統時間:2024-05-18 12:14:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!