过滤问题!(50分)

天什

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Xsdm数据模块中定义了一个Table1,datasource1,
Table1没有定义任何索引,我想在Table1中进行两种条件的同时筛选出我想要的记录;
条件是billdate字段值在两个日期之间和Name字段值中含有输入的值;
但是在退出form时出现错误;
“Exception EAccessViolation in module IDODBC32.Dll at 0002618.
Access violation at address 4DA06158 in module 'IDODBC32.Dll'.Read of address
CCCCCCE0.

在主模块的一个按钮事件
procedure TXsmanForm.BitBtn1Click(Sender: TObject);
begin
if rangeForm.showmodal=mrok then
begin
if rangeForm.CheckBox2.Checked then
Xsdm.Table1.IndexFieldNames:='Name';

Xsdm.Table1.Filtered:=True;

Xsdm.Table.IndexfieldNames:='Billdate';
Xsdm.Table.SetRange([rangeForm.DateTimePicker1.Date],[rangeForm.DateTimePicker2.Date]);

Xsdm.Table1.Refresh;
end;
end;

数据模块中:
procedure TXsDM.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
accept:=dataset['Name']=rangeForm.Edit1.Text;
end;

不知为什么会出现这种错误?
怎么解决?
 
怎么没人帮我呀?
 
请把你的窗体中的oncreat onshow和onclose事件的代码贴出来.
 
就写了
close;
没了.
 
close前加Xsdm.Table1.Filtered:=False试试
 
再检查其它地方有无定义的数组或指针, 将数组搞大试试
 
将代码作如下调整:
setRange…
Xsdm.Table1.Filtered:=True;
删掉 …Refresh

另外,还要注意,你要选择查询条件时,选择两个条件时的索引应该为两个字段

Xsdm.Table.IndexfieldNames:='Billdate'; 调整一下这句吧!
 
accept:=dataset['Name']=rangeForm.Edit1.Text;
上面这句不能这样写,
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
609
import
I
顶部