procedure TForm1.DeleteDate;
var
LDateTime : TDateTime;
begin
//
LDateTime := sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime;
sqlCashBankIn.Last;
while LDateTime = sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime do
begin
sqlCashBankIn.Delete;
sqlCashBankIn.Prior;
end; SaveData;
end;
var
LDateTime : TDateTime;
begin
//
LDateTime := sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime;
sqlCashBankIn.Last;
while LDateTime = sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime do
begin
sqlCashBankIn.Delete;
sqlCashBankIn.Prior;
end; SaveData;
end;
var
LDateTime : TDateTime;
begin
//
LDateTime := sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime; //字段EndDateTime的内容存入LDateTime变量
sqlCashBankIn.Last; //移动到最后一行
while LDateTime = sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime do
begin
sqlCashBankIn.Delete; //删除记录
sqlCashBankIn.Prior; //移动到上一行
end; SaveData; //这个方法不知道如何删除的
end;
循环从最后一条记录开始删除,如果LDateTime = sqlCashBankIn.fieldbyname('ENDDATETIME').AsDateTime 为TRUE,则删除,否则跳出循环,程序完成
如果数据库的记录是这样的
ID ENDDATETIME
1 2012-1-1 11:11:11
2 2012-1-1 11:11:11
3 2012-1-1 11:11:12
4 2012-1-1 11:11:11
5 2012-1-1 11:11:11
6 2012-1-1 11:11:11
只会删除4,5,6
savadata是触发器
CREATE TRIGGER dbo.TD_CASHBANKIN ON dbo.CASHBANKIN
FOR DELETE AS
BEGIN
if exists(select 1 from CASHBANKIN c,deleted d where c.SHOPID=d.SHOPID and c.STARTDATETIME=d.ENDDATETIME and c.PAYWAY=d.PAYWAY)
begin
raiserror 40001 '当前删除的入行单还存在更后的入行单,不能删除!'
rollback
return
end
update POSCASHMOVE set STARTDATETIME=null from deleted
where convert(varchar(11), POSCASHMOVE.STARTDATETIME,100)+' '+convert(varchar(8), POSCASHMOVE.STARTDATETIME,108)
= convert(varchar(11), deleted.ENDDATETIME,100)+' '+convert(varchar(8), deleted.ENDDATETIME,108)
and POSCASHMOVE.PAYTYPE = deleted.PAYWAY
END 我现在的删除总会多删除一条。