我想要删除表里的一条记录,删除了以后再把下面的序号逐一的减一,但为什么他运行了以后不减?源程序如下:
procedure Tdhdform.Button2Click(Sender: TObject);
var
aa:array[0..5] of integer;
begin
query1.close;
query1.sql.Clear;
query1.SQL.add('select * from dhd where ddh='''+edit1.text+'''');
query1.Open;
aa[0]:=query1.fieldvalues['xh'];
if query1.Eof and query1.Bof then
begin
showmessage('找不到这条记录!');
query1.close;
query1.sql.Clear;
query1.SQL.add('select * from dhd');
query1.Open;
aa[1]:=query1.RecordCount;
end
else
begin
if messagedlg('真的要删除这条记录吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('delete from dhd where ddh='''+trim(edit1.text)+'''');
query1.execsql;
while aa[0]<aa[1] do
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('update dhd set xh=aa[0] where xh=aa[0]+1');
query1.execsql;
aa[0]:=aa[0]+1;
end;
query1.Prepare;
query1.close;
query1.sql.Clear;
query1.sql.Add('select * from dhd order by xh');
query1.Open;
showmessage('你已经成功删除了这条记录!');
end
else
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('select * from dhd order by xh');
query1.Open;
end;
end;
end;
procedure Tdhdform.Button2Click(Sender: TObject);
var
aa:array[0..5] of integer;
begin
query1.close;
query1.sql.Clear;
query1.SQL.add('select * from dhd where ddh='''+edit1.text+'''');
query1.Open;
aa[0]:=query1.fieldvalues['xh'];
if query1.Eof and query1.Bof then
begin
showmessage('找不到这条记录!');
query1.close;
query1.sql.Clear;
query1.SQL.add('select * from dhd');
query1.Open;
aa[1]:=query1.RecordCount;
end
else
begin
if messagedlg('真的要删除这条记录吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('delete from dhd where ddh='''+trim(edit1.text)+'''');
query1.execsql;
while aa[0]<aa[1] do
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('update dhd set xh=aa[0] where xh=aa[0]+1');
query1.execsql;
aa[0]:=aa[0]+1;
end;
query1.Prepare;
query1.close;
query1.sql.Clear;
query1.sql.Add('select * from dhd order by xh');
query1.Open;
showmessage('你已经成功删除了这条记录!');
end
else
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('select * from dhd order by xh');
query1.Open;
end;
end;
end;
解决方案 »
- The Class function is called from a class constructor
- 请问delphi中一个从产生到被删除这一过程中产生的时间的顺序是什么?
- 急切请求大家帮助:datagrid显示数据的问题 !
- 关于API函数BITBLT返回值的问题
- 请教:对ADOQuery执行SQL出错,why?
- videocap有支持Delphi7的版本吗?
- 老板不发工资我该怎么办???
- 紧急求助!delphi开发的数据库程序客户端怎么连接到数据库服务器?
- 请问谁用过WPRichText?帮个忙!
- 用EXCEL做报表的模板,当数据库记录超过一页时如何处理?
- 我想做出类似WINDOWS优化大师这样框架的界面,应该怎么做?
- 学习控件开发遇到的问题:取祖先类的Font域问题!
放再
if messagedlg('真的要删除这条记录吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
前面
在Query的BeforeDelete事件中写入 :
iID := Query.FieldByName('xh').AsInteger;
在Query的AfterDelete事件中写入:
with Query do
begin
Close;
SQL.Clear;
SQL.Add('update dhd set xh = '''+IntToStr(XH-1)+'''');
SQL.Add('where XH > '''+IntToStr(iXH)+'''');
Execsql;
end;
query1.close;
query1.sql.Clear;
query1.SQL.add('select * from dhd');
query1.Open;
和aa[1]:=query1.RecordCount;
都放再
if messagedlg('真的要删除这条记录吗?',mtconfirmation,[mbyes,mbno],0)=mryes then 的前面
不信 你可以试一试