listview中已经查询添加了一些数据
如何实现当选中一行后,用该行的 名称 重新查询数据库把该行换成其他 名称 一样的一行,而且不改动已经查询出来的其他数据?
ADOQuery1.Fields[1].value 是名称
//这是listview1中老数据添加方式
procedure TForm1.tianjiaClick(Sender: TObject);
  var
  i:integer;
  Item:TListitem;
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.text:= 'select * from 数据库 where 名称 = '''+edit1.Text+'''';
  ADOQuery1.Open;
if  ADOQuery1.RecordCount<>0  then
begin
  for i:=0 to ADOQuery1.RecordCount-1  do
    begin
      item:=listview1.Items.Add;
      item.Caption:=ADOQuery1.Fields[0].value ;
      item.SubItems.Add(ADOQuery1.Fields[1].value);
      item.SubItems.Add(ADOQuery1.Fields[3].value);
      item.SubItems.Add(ADOQuery1.Fields[4].value);
      selectprice();
      item.SubItems.Add(floattostr(strtofloat(price)));
      ADOQuery1.Next;
    end;
end;
end;

解决方案 »

  1.   

    onchanged  事件加上上面代码不行吗
      

  2.   

    if ListView1.Selected=nil then 
      exit;with ADOQuery1 do begin
      sql.clear;
      sql.add('SELECT * FROM 数据库 WHERE 名称='+''''+ListView1.Selected.Caption+'''');
      open;
    end;ListView1.Selected.Caption:=ADOQuery1.Fields[0].AsString;
    .....
    不知道理解对你的意思没有?
      

  3.   

    不是啊,意思是,比如现在ListView1里面是这样编号   物品 名字
    1001  毛衣 张三
    1005  裤子 李四
    1008  衣服 王二我选中1005这行,根据这行的名字 李四 查询出 李四的除了裤子以外的其他任意东西 把这行换掉,但是其他行不动
    这个按钮就叫 换一样
      

  4.   

    查出来的不止一条,就随机一条,只要不是ListView那条
      

  5.   

    点选1005后 查询李四的,找到结果集后(以下假设只有一条记录)  listview1.Selected.Caption:= 'E';
      Listview1.Selected.SubItems.Strings[0]:= 'EEE';
      ....
    你的情况如下:      listview1.Selected.Caption:=ADOQuery1.Fields[0].value ;  //如果 1005不变的话,可以去掉这行
          Listview1.Selected.SubItems.Strings[0]:=ADOQuery1.Fields[1].value;
          Listview1.Selected.SubItems.Strings[1]:=ADOQuery1.Fields[3].value;
          Listview1.Selected.SubItems.Strings[2]:=ADOQuery1.Fields[4].value;
          ....另外 如果查出来的不止一条记录呢? 要插吗?
      

  6.   


    查出来的不止一条,就随机一条,只要不是ListView那条
      

  7.   

    给我的感觉,你其实就把你原来的代码中的item换成ListView1.Selected,去掉item:=listview1.Items.Add;