请指出这句代码不对的地方--马上给分 (10分)

  • 主题发起人 主题发起人 wl790102
  • 开始时间 开始时间
W

wl790102

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个文本框的keypress事件中的代码,想法是回车,设置数据模块dm中的clzd(Ttable1)的
filter 为 材料名称 like '%字符%' 字符为当前文本框的内容,然后把筛选过的table中所有的
材料名称 加到listbox中,让其选择,最后得到选择的结果(材料名称,材料序号)放入变量
请高手指点(我刚学delphi)
var cxm1:string;
i:integer;
begin
if key=#13 then
begin
cxm1:=clmc.Text;
dm.clzd.filter:='材料名称 like '+#37+cxm1+#37;
dm.clzd.active:=true;
for i:=1 to dm.clzd.RecordCount do
begin
ListBox1.Items.Add(dm.clzd.FieldValues['材料名称']);
next;
end;
ListBox1.Visible:=true;
ListBox1.SetFocus();
end;
end;
 
if key=#13 then
begin
cxm1:=clmc.Text;
dm.clzd.Filtered:=Flase;
//dm.clzd.filter:='材料名称 like '+#37+cxm1+#37;
dm.clzd.filter:='材料名称 like '+QuotedStr(cxm1);
dm.clzd.Filtered:=True;
dm.clzd.active:=true;
dm.clzd.First;
ListBox1.Items.Clear;
for i:=1 to dm.clzd.RecordCount do
begin
//ListBox1.Items.Add(dm.clzd.FieldValues['材料名称']);
ListBox1.Items.Add(dm.clzd.FieldByName('材料名称').AsString);
// next;
end;
ListBox1.Visible:=true;
ListBox1.SetFocus();
end;
 
建議和修改
1.字段名稱不要用中文,用英文
2.不要用FieldValues[''],這樣內容為空时會出現類型轉化錯誤
3.Filter前加上Filetered:=Flase;後加上Filtered:=True;
4.DataSet.Active:=True;是這樣執行的如果DataSet是打開的什麼也不做,
所以記錄指針可能不在First;

 
运行到 dm.clzd.First; 这句出错
 
什麼錯誤提示.
 
operation not appicable
 
clzd不支持Like
 
clzd 是foxpro表,为什么不支持,请教
 
接受答案了.
 
后退
顶部