query中加入where条件后requestlive属性不能设为true?(100分)

  • 主题发起人 主题发起人 michaelzhang
  • 开始时间 开始时间
M

michaelzhang

Unregistered / Unconfirmed
GUEST, unregistred user!
环境:mssqlserver+dephi5+bde
目的:将一个表中的部分数据选出后让用户编辑(修改,删除,添加,存盘)。
方法:query部件+动态where语句+数据导航条
现象:动态加入where条件后不能把requestlive属性设为true,报错:'can't find object'
 
先active:=true;
后requestlive:=true;

 
updateSQL最好不为空
 
为什么我的答案和 coao 正好相反:

先 RequestLive :=true;
再 open;

我是采用sql.add('...where '+条件) 方式。

 
用緩存更新就沒有這個問題了
 
先谢谢各位兄弟的答案。
coao兄的答案可以不报错,但数据集不能修改。
现将我的源程序附上,
procedure TFormvendor.ButtonretrieveClick(Sender: TObject);
var vendor_name,sqlstr,filterstr: string;
begin
Queryvendor.close;
sqlstr := 'select * from vendor where 1=1';
if Editvendor_id.text <> '' then
begin
if sqlstr<>'' then
sqlstr := sqlstr+' and vendor_id='+Editvendor_id.text;
if sqlstr='' then
sqlstr := sqlstr+' vendor_id='+Editvendor_id.text;
end;
if Editvendor_name.text <> '' then
begin
vendor_name := ''''+self.Editvendor_name.text+'''';
vendor_name := '%'+self.Editvendor_name.text+'%';
if sqlstr <> '' then
sqlstr := sqlstr + ' and vendor_name like '+''''+vendor_name+''''+' ';
if sqlstr = '' then
sqlstr := sqlstr + ' vendor_name like '+''''+vendor_name+''''+' ';
end;
Queryvendor.sql.Clear;
Queryvendor.SQL.add(sqlstr);
Queryvendor.Active:= true;
Queryvendor.RequestLive:=true;
Queryvendor.open;
if queryvendor.CanModify=true then
self.Queryvendor.Edit;
end;
 
>>'can't find object'

如果出现这个提示,要把字段名的大小写区分正确。
(即严格按照SQL Server表的字段名称的大小写)
 
如果出现这个提示,要把字段名的大小写区分正确。
(即严格按照SQL Server表的字段名称的大小写),并且在
Queryvendor.RequestLive:=true;的前面再加上一句,query1.cachupdate:=true;
 
多人接受答案了。
 
后退
顶部