为什么我可以添加数据,而不能更新呢?

Rubi 2006-03-25 07:49:17
我把excel数据读入到advStringgrid中,然后再倒入到数据库中,为什么用了edit不能更新呢?请问如何更新数据库存在的数据呢?
adoTbCarrier.Close;
adoTbCarrier.Open;
for i := 0 to asg.RowCount-1 do
if asg.Cells[0,i] <>'' then
begin
adoTbCarrier.Edit;
//adoTbCarrier.Locate('carrierid',asg.Cells[0,1],[loPartialKey]);
adoTbCarrier.FieldByName('carrierCode').AsString :=asg.Cells[1,i];
adoTbCarrier.Post;

{
adoTbCarrier.Append;
adoTbCarrier.FieldByName('carrierId').AsString := asg.Cells[0,i]; //小区号
adoTbCarrier.FieldByName('carrierCode').AsString := asg.Cells[1,i]; //小区名称
adoTbCarrier.Post;}
end;
ShowMessage('数据导入成功!');
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rubi 2006-03-26
  • 打赏
  • 举报
回复
其实我就是把excel往数据库里面导入,但是我就是不想导入重复的数据,如果是重复的数据就是修改其他非主键的内容,如果没有重复数据,就用append来添加新数据
Rubi 2006-03-26
  • 打赏
  • 举报
回复
当执行到adoTbCarrier.Post;的时候,提示数据集不处于edit状态?不知道这是怎么回事
47522341 2006-03-26
  • 打赏
  • 举报
回复
1,
出问题原因可能是你的数据集没有移动;就是adotbcarrier一直指向一条固定记录。
所以没有出现楼主预期的修改动作;
你可以试试如下代码:
adoTbCarrier.Close;
adoTbCarrier.Open;
adotbcarrier.first;
for i := 0 to asg.RowCount-1 do
if asg.Cells[0,i] <>'' then
begin
adoTbCarrier.Edit;
adoTbCarrier.FieldByName('carrierCode').AsString :=asg.Cells[1,i];
adoTbCarrier.Post;
adotbcarrier.next;
end;
ShowMessage('数据导入成功!');
Rubi 2006-03-26
  • 打赏
  • 举报
回复
自己在up下

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧