with adoquery1 do
begin
close;
sql.clear;
sql.add('delete * from tabel1 where name='+quotedstr(listiew1.items.subitem[i].caption));
ExceSQL;
end; 提示大概意思因为不是排在数据表第一个数据不能删除错误'at line 1';这样在不行,那好,用下面的,也不提示错误,就是只能删除排在数据表第一位的数据,处于后面的就没有反应,迷糊了;大家帮我看一看是怎么回事情。listiew1.items.subitem[i].caption));提取的字符没有问题,用showmessage有检查过;
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from tabel1');
open;
//showmessage(listiew1.items.subitem[i].caption);
if fieldbyname('name').asstring=listiew1.items.subitem[i].caption then
begin
delete;
ExceSQL;
end;
end;
begin
close;
sql.clear;
sql.add('delete * from tabel1 where name='+quotedstr(listiew1.items.subitem[i].caption));
ExceSQL;
end; 提示大概意思因为不是排在数据表第一个数据不能删除错误'at line 1';这样在不行,那好,用下面的,也不提示错误,就是只能删除排在数据表第一位的数据,处于后面的就没有反应,迷糊了;大家帮我看一看是怎么回事情。listiew1.items.subitem[i].caption));提取的字符没有问题,用showmessage有检查过;
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from tabel1');
open;
//showmessage(listiew1.items.subitem[i].caption);
if fieldbyname('name').asstring=listiew1.items.subitem[i].caption then
begin
delete;
ExceSQL;
end;
end;
begin
close;
sql.clear;
sql.add('delete * from tabel1 where name='+quotedstr(listiew1.items.subitem [i].caption));
ExceSQL;
end; 这段中SQL有问题改成 Delete from Table1 where name= 第二段代码
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from tabel1');
open;
//showmessage(listiew1.items.subitem[i].caption);
if fieldbyname('name').asstring=listiew1.items.subitem[i].caption then
begin
delete;
ExceSQL;
end;
end;
这段代码有问题啊,adoquery.open后光标在数据集第一条数据你判断它的name字段值是否等于listview1.items.subitem[i].caption . i不停变动, adoquery的name字段值固定,这样判断是在不知道有啥意义。
当相等时 你 Delete 后应该post ,至于EXceSQL 是执行非返回型SQL,你又没有 Update之类的SQL
第二种方法,你写的很有问题
Open之后,如果满足条件,直接delete,此时数据集指向第一条记录,delete肯定是删除第一条,奇怪的就是delete后的ExceSql,如果不出错才奇怪呀,因为根本没有可以去Exce的sql语句
第一段注意listview的取值方法。
第二段注意循环。