回 帖 发 新 帖 刷新版面

主题:再次询问:怎么样实现这种方式记录筛选

之前我有发贴如下:
  表单上有一个表格grid1,表格中绑定一个表,表中有个字段为“品名”;表单中有一个文本框。我想在文本框逐个输入字母时,表grid1中只显示“名品”中只包含文本框中的记录,例如:文本框中输入w,表中只显示“品名”第一个字母为w的记录,我再输入s,表中只显示“品名”前两个字母为ws的记录。请问各位大虾要怎么样实现?谢谢。
有大虾给出如下回答:
  假如表名叫“表A”,在文本框的InteractiveChange事件中加入以下代码:
SELECT * FROM 表A WHERE 品名=ALLTRIM(thisform.text1.text) INTO CURSOR TMP
ThisForm.Grid1.ColumnCount=-1
ThisForm.Grid1.RecordSourceType= 1
ThisForm.Grid1.RecordSource="TMP"
ThisForm.Grid1.Refresh
  以上方法是可以实现我的要求,但是此代码是在临时表上操作,我不想在临时表上操作,而是在原表上操作,请问sywzs大虾和各位大虾还有什么方法没有?谢谢了。

回复列表 (共6个回复)

沙发

set filt to 品名=ALLTRIM(thisform.text1.text)
ThisForm.Grid1.Refresh

板凳

在处理方法上,强烈建议你不要在原表上操作,而在临时表上操作,数据修改时再对应修改原表记录。这样的好处是最大程序保证数据表不会损坏,同时能提供最快的处理速度。在数据量大的时候用set filt to 是个很痛苦的事情了,特别是网络版系统,受传输速度的影响很大,也就是数据的刷新显示很成问题。

3 楼

使用SELECT * FROM 表A WHERE 品名=ALLTRIM(thisform.text1.text) INTO CURSOR TMP
不管原表是在局域网上面,还是本机硬盘上面,都会自动在Windows的临时目录生成一个本地的临时文件结果,这样对这个结果进行操作,速度就会比在局域网上快一个数量级

4 楼

[quote]使用SELECT * FROM 表A WHERE 品名=ALLTRIM(thisform.text1.text) INTO CURSOR TMP
不管原表是在局域网上面,还是本机硬盘上面,都会自动在Windows的临时目录生成一个本地的临时文件结果,这样对这个结果进行操作,速度就会比在局域网上快一个数量级[/quote]


  大哥,有沒有考慮到用SQL在取值時就會有網絡塞堵的問題啊?再說用TEXT1.TEXT來進行變量SQL,這是一個很恐怖的操作,因為每改一下TEXT1.TEXT,就會發生一次SQL數據的取值動作!還是具體問題具體對待吧!
 
  1.如果數據量少,網絡帶寬足夠,且篩選不是頻繁發生,建議用SQL.

  2.如果數據量大,網絡狀況不理想,且要頻繁進行篩選.建議一次下把數據取到位,倉建臨時表,然后用FILTER本地操作.直到原表更新,再進行SQL原表下載(統計過,下載一個幾千萬條記錄的表,在局域網中速度好象也感覺不到在等待.再說,從實際運用過程中看,更新表的頻率還是挺低的.如果每10分鐘更新一次的話,我想每10分鐘DOWN一次,就算等上2秒(其實2秒的時間電腦可以做很多事了,如果2M的帶寬全部自己用的話,可以下載4M的數據了,我想沒有這麼大型的純文字數據表吧!)

5 楼

[quote][quote]使用SELECT * FROM 表A WHERE 品名=ALLTRIM(thisform.text1.text) INTO CURSOR TMP
不管原表是在局域网上面,还是本机硬盘上面,都会自动在Windows的临时目录生成一个本地的临时文件结果,这样对这个结果进行操作,速度就会比在局域网上快一个数量级[/quote]


  大哥,有沒有考慮到用SQL在取值時就會有網絡塞堵的問題啊?再說用TEXT1.TEXT來進行變量SQL,這是一個很恐怖的操作,因為每改一下TEXT1.TEXT,就會發生一次SQL數據的取值動作!還是具體問題具體對待吧!
 
  1.如果數據量少,網絡帶寬足夠,且篩選不是頻繁發生,建議用SQL.

  2.如果數據量大,網絡狀況不理想,且要頻繁進行篩選.建議一次下把數據取到位,倉建臨時表,然后用FILTER本地操作.直到原表更新,再進行SQL原表下載(統計過,下載一個幾千萬條記錄的表,在局域網中速度好象也感覺不到在等待.再說,從實際運用過程中看,更新表的頻率還是挺低的.如果每10分鐘更新一次的話,我想每10分鐘DOWN一次,就算等上2秒(其實2秒的時間電腦可以做很多事了,如果2M的帶寬全部自己用的話,可以下載4M的數據了,我想沒有這麼大型的純文字數據表吧!)[/quote]


我和你一个意思啊。

6 楼

谢谢各位大侠,让我知道这么多。

我来回复

您尚未登录,请登录后再回复。点此登录或注册