主题:再次询问:怎么样实现这种方式记录筛选
hnplus
[专家分:0] 发布于 2010-01-16 21:13:00
之前我有发贴如下:
表单上有一个表格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个回复)
沙发
sywzs [专家分:5650] 发布于 2010-01-17 05:52:00
set filt to 品名=ALLTRIM(thisform.text1.text)
ThisForm.Grid1.Refresh
板凳
kosung [专家分:910] 发布于 2010-01-17 11:52:00
在处理方法上,强烈建议你不要在原表上操作,而在临时表上操作,数据修改时再对应修改原表记录。这样的好处是最大程序保证数据表不会损坏,同时能提供最快的处理速度。在数据量大的时候用set filt to 是个很痛苦的事情了,特别是网络版系统,受传输速度的影响很大,也就是数据的刷新显示很成问题。
3 楼
wuzhouhong [专家分:10890] 发布于 2010-01-19 14:37:00
使用SELECT * FROM 表A WHERE 品名=ALLTRIM(thisform.text1.text) INTO CURSOR TMP
不管原表是在局域网上面,还是本机硬盘上面,都会自动在Windows的临时目录生成一个本地的临时文件结果,这样对这个结果进行操作,速度就会比在局域网上快一个数量级
4 楼
GEORGECHIN [专家分:440] 发布于 2010-01-19 15:28:00
[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 楼
wuzhouhong [专家分:10890] 发布于 2010-01-19 16:10:00
[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 楼
hnplus [专家分:0] 发布于 2010-01-19 22:22:00
谢谢各位大侠,让我知道这么多。
我来回复