sql的update怎样修改当前记录(40分)

  • 主题发起人 主题发起人 fireboy
  • 开始时间 开始时间
F

fireboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SQL的UPDATE去修改数据库,但发现所有数据全被改变,应怎样去修改当前记录,而且当我INSERT之后,QUERY的NEXT,PRIOR,FIRST,LAST都不能用了
报错:CAN‘T PREFORM THIS ON A CLOSED DATASET
我是新手,请多指教。
 
我的这个数据库没有索引等标识性的字段。
 
能不能先post然后再NEXT,PRIOR,FIRST,LAST
 
试过了,没用。
 

Close;
Open;
 
update 表名称 set 字段名称 = 表达式 where 字句
 
begin
query1.close;
query1.open;
.....
.....
end;
 
Query1.RequestLive:=true;
 

为什末我用了REQUERTLIVE:=TRUE 之后报错:INVALID USE OF KEYWORD:DEC,ALIAN,EXPRESSION。
 
而且,删除了REQUESTLIVE:=TRUE 之后,插入又可正确执行。
代码如下:
sql.add('insert into haha (xpos,ypos,width,fontns,nums,dec,alian,threes,expression ) ');
sql.add(' values (:xpos,:ypos,:width,:fontns,:nums,:dec,:alian,:threes,:expression ) ');
parambyname('.........
...
...
 
你移动到将要插入新记录的地方;
然后将Dataset置为编辑状态Edit如:
Query.Edit;再执行插入记录操作。
 
我使用了QUERY。EDIT, 系统报错:CAN‘T PERFORM THIS OPERATION ON A CLOSED DATASET
 
然后尝试调用QUERY。OPEN 报错:INVALID FLOATING POINT OPERATION
我是新手,请多指教。
 
您把Query.Cachedupdates设为False
 
我的 CACHEUPDATE 是FALSE。
 
是因为ExecSQL后,TQuery.Active为False,你必须再使用 Select * from ... where ...
后设置 TQuery.Active:=True,这样你就可以NEXT,PRIOR,FIRST,LAST,Edit,Post
 
但是我在执行到ACTIVE:=TRUE 时,报错INVALID FLOATING POINT OPERATOIN
 
而且 似乎是每执行一次EXECSQL 再执行QUERY。ACTIVE:=TRUE;都会报此错误。
 
EDIT 仍不能调用,CAN‘T MODIFY A READONLY DATASET
 
大家说的都是对的,我在创建TABLE的FORM上试做了一遍,一切正常,换了一个FORM
就会报错。可能是我的程序中有别的问题,但我实在是找不到。过一会儿再把分分给大家。
 

Similar threads

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