我想删除一条指定记录,但是每次都是删除的第一条记录,是怎么回事?代码如下with dm.ADOQuery6 do begin
close;
sql.Clear;
sql.Add('select * from pack');
open;
if Eof then begin
Close;
ShowMessage('记录为空!');
exit;
end
else
if messagedlg('记录将被删除!确认吗?',mtconfirmation,[mbYes,mbNo],0)=mrYes then
begin
with dm.ADOQuery6 do begin
delete;
close;
sql.Clear;
sql.add('select * from pack order by 日期 asc');
open;
end;
end;
close;
sql.Clear;
sql.Add('select * from pack');
open;
if Eof then begin
Close;
ShowMessage('记录为空!');
exit;
end
else
if messagedlg('记录将被删除!确认吗?',mtconfirmation,[mbYes,mbNo],0)=mrYes then
begin
with dm.ADOQuery6 do begin
delete;
close;
sql.Clear;
sql.add('select * from pack order by 日期 asc');
open;
end;
end;
解决方案 »
- 大侠请进:谁能控制MT4的图表显示
- 有人了解郑州的美萍软件吗?进来说说情况
- 有关Delphi使用的问题。
- 请教:如何将DBGRID数据导出到EXCEL中来呢?最好能没五条记录做一页,谢谢指教。
- 如何让TChart的显示放大?
- 在线等待,请问:现在生成了delphi 的可执行文件,在delphi的哪个文件里才能找到此可执行文件的生成路径那?
- 求一算法!
- 如何采用多线程(或其它)方法解决当某断程序持续时间长时界面无法更新的问题?
- VC如何使用Delphi写的DLL
- 用query或table查询数据库后,显示在dbgrid中,如何把这些记录打印出来???
- DateTimePicker控件的使用问题
- C#调用delphi编写的DLL参数是结构体
sql.Add('select * from pack');
open;
现在默认的游标是在第一条。所以后续执行delete 删除的就是第一行。
想要删除指定记录,不妨换个思路:
sql.Add('delete from pack where "条件");
dm.ADOQuery6.excute;
begin
// close;
// sql.Clear;
// sql.Add('select * from pack');
// open;
if isEmpty then
begin
Close;
ShowMessage('记录为空!');
exit;
end
else
if messagedlg('记录将被删除!确认吗?',mtconfirmation,[mbYes,mbNo],0)=mrYes then
begin
// with dm.ADOQuery6 do begin
delete;
UpdateBatch;
// close;
// sql.Clear;
// sql.add('select * from pack order by 日期 asc');
// open;
end;
end;
end;