sql更新只更新第一行

时间:2022-06-19 19:16:51
adoquery1.close;
adoquery1.sql.Clear;
adoquery1.sql.add('select * from zidian');
adoquery1.open;
adoquery1.Edit;
adoquery1.fieldbyname('quyu').AsString:=quyu;
adoquery1.fieldbyname('id').AsString:=edit2.Text;
adoquery1.fieldbyname('name').AsString:=edit3.Text;
adoquery1.post;
edit2.Clear;
edit3.Clear;
application.MessageBox('修改成功!','正确',mb_ok);

我这样写.但是只更新我第一行的数据.这是为什么?

12 个解决方案

#1


adoquery1.close; 
adoquery1.sql.Clear; 
adoquery1.sql.add('select * from zidian'); 
//adoquery1.open; 
//adoquery1.Edit; 
adoquery1.append;
adoquery1.fieldbyname('quyu').AsString:=quyu; 
adoquery1.fieldbyname('id').AsString:=edit2.Text; 
adoquery1.fieldbyname('name').AsString:=edit3.Text; 
adoquery1.post; 
edit2.Clear; 
edit3.Clear; 
application.MessageBox('修改成功!','正确',mb_ok); 
试试

#2


这个应该是插入数据吧
我想要的是修改
比如我有三行数据


然后if zidian.TreeView1.Selected <> nil then
 begin
     if not zidian.ADOQuery1.eof then
     begin
 bjzl.edit1.Text:=zidian.TreeView1.Selected.Text;
 bjzl.Edit2.Text:=zidian.ADOQuery1.fieldbyname('编号').AsString;
 bjzl.Edit3.Text:=zidian.ADOQuery1.fieldbyname('名称').AsString;


读我选中的数据到另一个form上的edit只.然后更改其中某一字段.点保存.修改该行数据


我现在的结果是有一个是修改了.但是修改的不是我选中的数据(比如我选中的是第二行)它切总是只修改第一行的数据

#3


Adoquery的Edit只对当前记录有效,需要使用Next移动到下一条记录进行修改。
还是写个SQL语句吧:

Adoquery1.Connection.Execute(Format('UPDATE zidian quyu=''%s'',id=''%s'',name=''%s''',[quyu,edit2.Text,edit3.Text]));

#4


你是直接在表格上做修改吗

#5


用ADOCOMMAND吧

#6


你这种方法也就只能是更新一行,更新多行问题就大了
换个方法处理更新多行

#7


遍历结果集更新吧

#8


我只需要更新一行.关键是我现在更新出来的都不对.我更新第二行.结果总变成更新第一行

#9


改哪行就定位到哪行啊

建议使用sql语句

#10


用数据感知组件来定位.改那行就点那一行.

#11


我做了一个定位就好了.谢谢.

#12


你可以把zidian里面的唯一值赋在页面里面.比如select * from zidian where ....

这样就不会错了.

#1


adoquery1.close; 
adoquery1.sql.Clear; 
adoquery1.sql.add('select * from zidian'); 
//adoquery1.open; 
//adoquery1.Edit; 
adoquery1.append;
adoquery1.fieldbyname('quyu').AsString:=quyu; 
adoquery1.fieldbyname('id').AsString:=edit2.Text; 
adoquery1.fieldbyname('name').AsString:=edit3.Text; 
adoquery1.post; 
edit2.Clear; 
edit3.Clear; 
application.MessageBox('修改成功!','正确',mb_ok); 
试试

#2


这个应该是插入数据吧
我想要的是修改
比如我有三行数据


然后if zidian.TreeView1.Selected <> nil then
 begin
     if not zidian.ADOQuery1.eof then
     begin
 bjzl.edit1.Text:=zidian.TreeView1.Selected.Text;
 bjzl.Edit2.Text:=zidian.ADOQuery1.fieldbyname('编号').AsString;
 bjzl.Edit3.Text:=zidian.ADOQuery1.fieldbyname('名称').AsString;


读我选中的数据到另一个form上的edit只.然后更改其中某一字段.点保存.修改该行数据


我现在的结果是有一个是修改了.但是修改的不是我选中的数据(比如我选中的是第二行)它切总是只修改第一行的数据

#3


Adoquery的Edit只对当前记录有效,需要使用Next移动到下一条记录进行修改。
还是写个SQL语句吧:

Adoquery1.Connection.Execute(Format('UPDATE zidian quyu=''%s'',id=''%s'',name=''%s''',[quyu,edit2.Text,edit3.Text]));

#4


你是直接在表格上做修改吗

#5


用ADOCOMMAND吧

#6


你这种方法也就只能是更新一行,更新多行问题就大了
换个方法处理更新多行

#7


遍历结果集更新吧

#8


我只需要更新一行.关键是我现在更新出来的都不对.我更新第二行.结果总变成更新第一行

#9


改哪行就定位到哪行啊

建议使用sql语句

#10


用数据感知组件来定位.改那行就点那一行.

#11


我做了一个定位就好了.谢谢.

#12


你可以把zidian里面的唯一值赋在页面里面.比如select * from zidian where ....

这样就不会错了.