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;
如何实现当选中一行后,用该行的 名称 重新查询数据库把该行换成其他 名称 一样的一行,而且不改动已经查询出来的其他数据?
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;
exit;with ADOQuery1 do begin
sql.clear;
sql.add('SELECT * FROM 数据库 WHERE 名称='+''''+ListView1.Selected.Caption+'''');
open;
end;ListView1.Selected.Caption:=ADOQuery1.Fields[0].AsString;
.....
不知道理解对你的意思没有?
1001 毛衣 张三
1005 裤子 李四
1008 衣服 王二我选中1005这行,根据这行的名字 李四 查询出 李四的除了裤子以外的其他任意东西 把这行换掉,但是其他行不动
这个按钮就叫 换一样
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;
....另外 如果查出来的不止一条记录呢? 要插吗?
查出来的不止一条,就随机一条,只要不是ListView那条