谈谈我的感觉吧:
这个作品显示你有很好的delphi功底,但也暴露了你运用Sql的能力不足.举例:
(在DataModule中)
function TDM.GetAllBookNum:integer;
// 获得库中图书总数
var
Query:TADOQuery;
begin
result:=0;
Query:=TADOQuery.Create(self);
Query.Connection:=ADOConnection1;
Query.SQL.Text:='select * from book_stock';
Query.Open;
while not Query.Eofdo
begin
result:=result + Query.FieldByName('bookinnumber').AsInteger -
Query.FieldByName('bookoutnumber').AsInteger;
Query.Next;
end;
Query.Close;
Query.Free;;
end;
你这种做法是把图书的进出馆的记录都取到前台,再进行计算,在真实的一个应用中,这种方法
行不通(如果记录多,计算会很慢),其实你用一条Sql语句就可以算出你所需要的结果:
select (sum( bookinnumber) -sum(bookoutnumber)) as AllBookNum from book_stock
同理,以下的函数也可作同样的优化:
function TDM.GetStockBookNum(bookid:string):integer;
//获得库存中某书总数
var
Query:TADOQuery;
begin
result:=0;
Query:=TADOQuery.Create(self);
Query.Connection:=ADOConnection1;
Query.SQL.Text:='select bookinnumber,bookoutnumber from book_stock '+
'where bookid=:id';
Query.Parameters.ParamByName('id').Value:=bookid;
Query.Open;
while not Query.Eofdo
begin
result:=result + Query.FieldByName('bookinnumber').AsInteger -
Query.FieldByName('bookoutnumber').AsInteger;
Query.Next;
end;
Query.Close;
Query.Free;
end;
我好像发现你的这个作品中很少(甚至没有?)利用sql做过计算