如果用的是SQL SERVER或其他的关系型数据库,可以考虑用触发器,给你一个例子: CREATE TRIGGER [tri_delete_inrec] ON [dbo].[InRecord] FOR DELETE AS declare @PartCode int,@Number float declare delete_cursor cursor for select PartCode,InNumber from deleted open delete_cursor fetch next from delete_cursor into @PartCode,@Number while @@fetch_status=0 begin update part set Currentstorage=CurrentStorage-@Number where PartCode=@PartCode fetch next from delete_cursor into @PartCode,@Number end close delete_cursor deallocate delete_cursorgo CREATE TRIGGER [tri_insert_inrec] ON [dbo].[InRecord] FOR INSERT AS Declare @InNumber float,@PartCode int if @@rowcount>0 declare insert_cursor cursor for select PartCode,InNumber from inserted open insert_cursor fetch next from insert_cursor into @PartCode,@InNumber while @@fetch_status=0 begin update part set part.CurrentStorage=part.CurrentStorage+@InNumber where part.PartCode=@PartCode fetch next from insert_cursor into @PartCode,@InNumber end close insert_cursor deallocate insert_cursorgo CREATE TRIGGER [tri_update_inrec] ON [dbo].[InRecord] FOR UPDATE AS Declare @NewNumber float,@OldNumber float,@OldPartCode int,@NewPartCode int if update(innumber) or update(PartCode) begin declare update_cursor cursor for select i.PartCode as NewPartCode,d.PartCode as OldPartCode,i.innumber as newnumber,d.innumber as OldNumber from inserted i ,deleted d where i.InRecordID=d.InRecordID open update_cursor fetch next from update_cursor into @NewPartCode,@OldPartCode,@NewNumber,@OldNumber while @@fetch_status=0 begin update part set CurrentStorage=CurrentStorage+@NewNumber where PartCode=@NewPartCode update part set CurrentStorage=CurrentStorage-@OldNumber where PartCode=@OldPartCode fetch next from update_cursor into @NewPartCode,@OldPartCode,@NewNumber,@OldNumber end close update_cursor deallocate update_cursor end
CREATE TRIGGER [tri_delete_inrec] ON [dbo].[InRecord]
FOR DELETE
AS
declare @PartCode int,@Number float
declare delete_cursor cursor for select PartCode,InNumber from deleted
open delete_cursor
fetch next from delete_cursor into @PartCode,@Number
while @@fetch_status=0
begin
update part set Currentstorage=CurrentStorage-@Number where PartCode=@PartCode
fetch next from delete_cursor into @PartCode,@Number
end
close delete_cursor
deallocate delete_cursorgo
CREATE TRIGGER [tri_insert_inrec] ON [dbo].[InRecord]
FOR INSERT
AS
Declare @InNumber float,@PartCode int
if @@rowcount>0
declare insert_cursor cursor for select PartCode,InNumber from inserted
open insert_cursor
fetch next from insert_cursor into @PartCode,@InNumber
while @@fetch_status=0
begin
update part set part.CurrentStorage=part.CurrentStorage+@InNumber
where part.PartCode=@PartCode
fetch next from insert_cursor into @PartCode,@InNumber
end
close insert_cursor
deallocate insert_cursorgo
CREATE TRIGGER [tri_update_inrec] ON [dbo].[InRecord]
FOR UPDATE
AS
Declare @NewNumber float,@OldNumber float,@OldPartCode int,@NewPartCode int
if update(innumber) or update(PartCode)
begin
declare update_cursor cursor for select i.PartCode as NewPartCode,d.PartCode as OldPartCode,i.innumber as newnumber,d.innumber as OldNumber from inserted i ,deleted d where i.InRecordID=d.InRecordID
open update_cursor
fetch next from update_cursor into @NewPartCode,@OldPartCode,@NewNumber,@OldNumber
while @@fetch_status=0
begin
update part set CurrentStorage=CurrentStorage+@NewNumber where PartCode=@NewPartCode
update part set CurrentStorage=CurrentStorage-@OldNumber where PartCode=@OldPartCode
fetch next from update_cursor into @NewPartCode,@OldPartCode,@NewNumber,@OldNumber
end
close update_cursor
deallocate update_cursor
end
在实现sure功能的button事件时,将总量-private变量+现在数量得出新的总量
这好象是最简单的方法,但不知道是不是适合你的系统.
打印完后自动减好象并不是很难实现呀.只是看你需要在哪里实现了.