adoquery的修改记录值的问题?(100分)

  • 主题发起人 主题发起人 njcw666
  • 开始时间 开始时间
N

njcw666

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过如下代码with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select number from holiday');
sql.Add('where number=:number');
Parameters.ParamByName('number').Value:='001';
Open;
//canmodify:=true;
first;
while not eof do
begin
edit;
fieldbyname('number').AsVariant:='002';
// post;
next;
end;
end;
将表 中 number 字端 为001的编号全改为 002时总出错,如何改代码!!!
 
直接用SQL呀
sql.add('update holiday set number=''002'' where number=''001'';');
 
如果我的002和001 使用动态赋值的,我这样写有错误,为什么?
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('update holiday set number=:new') ;
sql.Add('where number=:number');
Parameters.ParamByName('new').Value:=edit1.Text;
Parameters.ParamByName('number').Value:=sold;
Open;

end;
 
sql.add(format(
'update holiday set number=''%s'' where number=''%s'';',
[edit1.text,sold]));
 
to ysai:
这样会出错,提示:不能恢复不单一值。
为什么年
 
to ysai
我的错误提示为:syntax error
 
sql.add('update holiday set number=''002'' where number=''001'';');


如果我的002和001 使用动态赋值的,我这样写有错误,为什么?
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('update holiday set number=:new') ;
sql.Add('where number=:number');
Parameters.ParamByName('new').Value:=edit1.Text;
Parameters.ParamByName('number').Value:=sold;
Open;

end;
 
检查一下你的number字段是什么类型的。是字符型还是整型?
 
我用如下一段代码 将holiday 表中的 number 更新为002, 出错 syntax error 我是用的
access 2000 建的表 number 为 字符型 长度为 3,我很急,请高手指教!!!!
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.add('update holiday set number=''002''');
execsql;
end;
 
请高手指点,再线等待!!!
 
你有没有尝试,在下面这段程序中,把'002'换成'000','001','003'等等,行不行?
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.add('update holiday set number=''002''');
execsql;
end;

如果除了'002'别得都行,那就应该是数据的问题了,如果别的也不行,说明是语句的问题.
先把这个搞清楚了再说.
 
sql.add('update holiday set number='''002'''');
 
我试过了,换成什么都有问题,语句错在什么地方?
在下面这段程序中,把'002'换成'000','001','003'等等都不行
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.add('update holiday set number=''002''');
execsql;
end;
 
to 卡色
编译不通过
 
字段名称不能命名为number
number是保留字?
 
to: njcw666
代码本身应该没有问题~

你这个字段是不是设为“主键”了~
 
用Run->add watch跟踪Query1.sql.text
单步调试或在execsql,open等处设断点
 

Similar threads

S
回复
0
查看
685
SUNSTONE的Delphi笔记
S
S
回复
0
查看
645
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部