Потому что у тебя никогда не закончится второй while, а не закончится он по причине общей кривизны кода
Вообще данный метод нахождения чего либо на мой взгляд слишком тормозной.
Если у тебя в приложении связь с БД настроена через ADOConnection то могу предложить следующее:
Код:
function Get_p_kol_vo(nazv:string):integer;
var
Q:TADOQuery;
begin
Q:=TADOQuery.Create(nil);
with Q do
begin
Connection:=ADOConnection1; //если есть, или путь к БД
SQL.Text:='SELECT SUM([Prihod_Kol-vo]) as PR_SUM FROM Prihod WHERE Prihod_Tovar = :nazv';
Parameters.ParseSQL(SQL.Text,True);
Parameters.ParamByName('nazv').Value:=nazv;
Open;
Result:=FieldByName('PR_SUM').AsInteger;
Close;
end;
Q.Free;
end;
пример вызова:
Код:
Get_p_kol_vo(DataModule1.ADOTableTovars.FieldByName('tovars_naz v_id').AsString)
ЗЫЖ Желательно еще прикрутить обработку ошибок
ЗЗЫЖ Набирал прямо в explorer'е поэтому за синтаксис не ручаюсь
