我用两个adoquery,一个是ADOQ_xs联'学生表'另一个是ADOQ_xs_cx 联'学生表的视图'在窗体里有一个查询,下面代码是个过滤,过滤后的记录在xjlr页上显示,但为什么修改总有问题呀!为什么这么说呢!是因为有时能修改,有时不能修改,有时多点几下鼠标就能修改了,不知到为什么呀!!
这是一个查询的button
procedure TF_main.suitempBitBtn6Click(Sender: TObject);
begin
datamodule1.ADOQ_xs.Close ;
datamodule1.ADOQ_xs.SQL.Clear ;
datamodule1.ADOQ_xs.SQL.Add('select * from 学生表 ');
datamodule1.ADOQ_xs.Open ;
if datamodule1.ADOQ_xs_cx .Eof then exit;
datamodule1.ADOQ_xs .Filtered:=false;
datamodule1.ADOQ_xs .Filter:='[学号] = '+QuotedStr(datamodule1.ADOQ_xs_cx .FieldByName('学号').AsString);
datamodule1.adoq_xs .Filtered:=true;
datamodule1.ADOQ_xs .open;
PageControl1.ActivePage := xjlr;
end;
请点一下,谢谢了!!!
这是一个查询的button
procedure TF_main.suitempBitBtn6Click(Sender: TObject);
begin
datamodule1.ADOQ_xs.Close ;
datamodule1.ADOQ_xs.SQL.Clear ;
datamodule1.ADOQ_xs.SQL.Add('select * from 学生表 ');
datamodule1.ADOQ_xs.Open ;
if datamodule1.ADOQ_xs_cx .Eof then exit;
datamodule1.ADOQ_xs .Filtered:=false;
datamodule1.ADOQ_xs .Filter:='[学号] = '+QuotedStr(datamodule1.ADOQ_xs_cx .FieldByName('学号').AsString);
datamodule1.adoq_xs .Filtered:=true;
datamodule1.ADOQ_xs .open;
PageControl1.ActivePage := xjlr;
end;
请点一下,谢谢了!!!
如果你用SQL语句进行修改,应该会好的。
datamodule1.ADOQ_xs.SQL.Clear ;
datamodule1.ADOQ_xs.SQL.Add('select * from 学生表 ');
datamodule1.ADOQ_xs.Open ; //问题就出在这,你原来的过滤器没有取消
datamodule1.ADOQ_xs .Filtered:=false; if datamodule1.ADOQ_xs_cx .Eof then exit;
datamodule1.ADOQ_xs .Filter:='[学号] = '+QuotedStr(datamodule1.ADOQ_xs_cx .FieldByName('学号').AsString);
datamodule1.adoq_xs .Filtered:=true;
datamodule1.ADOQ_xs .open;
PageControl1.ActivePage := xjlr;
end;即使这样修改,代码的执行效率不高,还感觉乱!