Она не зависает, а бесконечно бегает на проверке максимума т.к. до инструкции AdoDataSet1.Next не добирается.
Так попробуйте:
Код:
max:=0;
AdoDataset1.First;
While not AdoDataSet1.Eof
do begin
If AdoDataSet1Posit.AsInteger>max
then begin
max:=AdoDataSet1Posit.AsIneger;
Edit1.Text := AdoDataSet1Nazv.AsString;
end;
AdoDataSet1.Next;
end;