表的过滤问题!(20分)

  • 主题发起人 主题发起人 ynjt
  • 开始时间 开始时间
Y

ynjt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在作一张报表时需要将数据过滤,我想按字段长度过滤,不知代码如何写。
我这样写不对,请高手指正。
table1.filter:='length('字段名')>5';
table1.filtered:=true;
 
是不是太简单没人回答。
 
加分了。
 
不行,还是用sql吧。
 
SQL如何写?
 
以SQL Server为例
use pubs
select * from sales where len(ord_num) > 4
 
语句错误怎么回事?
 
用过滤条件时,可能不能加运算符,另外使用sql语句时,运算符要注意一下,如果用sqlserver的计算符用到oracle中,肯定是错误了!!
 
照上面输入提示:能力不支持(Capability not supported)什么原因呢?
 
用table是不行的,建议用query,sybase库用length(),sql sever 用len()
select * from table where length(field)>4
 
table1.filter:='length('+QuotedStr(字段名)+'>5';
table1.filtered:=true;

 
to smhsoft
不能实现,在运行时提示字段length没找到。
 
如果字段是字符型就这样!
table1.filtered:=true;
table1.filter:='len(字段名)>5';
如果是数值型则
table1.filtered:=true;
table1.filter:='len('+inttostr(字段名)+')>5';
 
不能通过提示一样(len字段没找到)。
 
在OnFilterRecord里写Accept
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin

end;
 
You can write code to filter records using the OnFilterRecord events generated by the dataset for each record it retrieves. This event handler implements a test that determines if a record should be included in those that are visible to the application.
To indicate whether a record passes the filter condition, your OnFilterRecord handler sets its Accept parameter to True to include a record, or False to exclude it. For example, the following filter displays only those records with the State field set to 揅A?
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := DataSet['State'].AsString = 'CA';
end;

When filtering is enabled, an OnFilterRecord event is generated for each record retrieved. The event handler tests each record, and only those that meet the filter抯 conditions are displayed. Because the OnFilterRecord event is generated for every record in a dataset, you should keep the event handler as tightly-coded as possible to avoid adversely affecting the performance.
You can code any number of OnFilterRecord event handlers and switch among them at runtime. For example, the following statements switch to an OnFilterRecord event handler called NewYorkFilter:
DataSet1.OnFilterRecord := NewYorkFilter;
Refresh;
 
过滤时好象只有很简单的几个函数,我觉的还是PB的过滤功能强大,我也遇到这个问题,最后也是改用Query了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
926
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部