关于Tquery的问题(35分)

  • 主题发起人 主题发起人 plwei
  • 开始时间 开始时间
P

plwei

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样获query当前纪录某个字段的值。用fields or fieldvalues行吗?
我的程序代码如下:
query1.close;
query1.SQL.clear;
query1.SQL.add('delete from "c:/party/partyman.dbf"
where porder=:porder;');
query1.ParamByName('porder').asinteger:=
query1.Fields[1].asinteger;
query1.ExecSQL;

我想用它来删除当前纪录。不知为什么不行?请哪位高手指教。
再怎样使删除或添加纪录后DBGrid的内容更新?
 
当然不行,因为query是动态生成的,而参数的判断是在query生成之前。
用dataset的refresh属性可以更新DBgrid的内容.


 
获query当前纪录某个字段的值可以用
Query.FieldByName("字段名").asString(asInteger等)
 
正象mxf所说那么有什么办法删除query的当前纪录呢?
用fieldbyname好象也不行吧?
 
你可以用一个变量先保留相应的字段值,
再用Query进行删除嘛(where部分用保留的变量值进行传递).
FieldByName怎么会有问题,不相信。
 
query返回的数据集似乎是只读的,不信可以用个datasource和dbnavigater与之联
系起来,会发现dbnavigater的按钮除first,last,next,last为enable外,其余均
为disable。所以,在query中删除记录是不可以的,只能在table中去删。

如果你的查询条件不是很复杂,建议你用table设filter来做。若必须用query,则应
将要上的记录记下来,再在table中查询删除。
 
先用aa:=query1.fieldbyname('fieldname').value获字段值
再用delete from yourtable where fieldname=aa
再刷新query1.close;
query1.open;
如果是单表查询,可将query的RequestLive属性置为true,
可用query1.delete删除 ;
 
some error in your code. after you change the SQL strings, all record in query will be clear. so
value of "query1.Fields[1].asinteger" is NULL
you can use a variable to store the key value, then change the SQL.
 
按照大家的指点我将代码修改为:
with query1 do
begin
sub:=Fieldbyname('porder').asinteger;
close;
SQL.clear;
SQL.add('delete from "c:/party/partyman.dbf" where
porder=:porder;');
ParamByName('porder').asinteger:=sub;
ExecSQL;
close ;
open;《----
end;

虽然可以删除,可是在执行到open时系统提示:Error creating cursor handle.不知什么原因?
 
我已经知道原因了,谢谢各位。 我接受答案了。
 
多人接受答案了。
 
后退
顶部