![]() |
|
|
#1
|
|||
|
|||
|
Есть БД.
Нужно найти в столбце из чисел максимум.. Как это можно сделать не через SQL? Подскажите. Заранее спасибо. |
|
#2
|
|||
|
|||
|
Неужели никто не подскажет?
Очень надо.. Никак не врублюсь как это сделать и в литературе не могу найти. |
|
#3
|
||||
|
||||
|
Способ 1
Упорядочи строки по возрастанию элементов в этом столбце. Тогда в последней строке будет максимальный элемент. Способ 2 Тупо сравниваешь между собой элементы во всех строках. |
|
#4
|
|||
|
|||
|
Можно через TTable. А максимум считать в Delphi. Но советуют, чтобы обработка велась сервером БД. Почему нельзя сделать запрос?
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
|||
|
|||
|
Можно дать запрос, но он только отображает максимум.. а если я хочу его определить в новую переменную и дальше с ним работать, как тогда?
Повторюсь.. Обыкновенная БД в Дельфи написанная через Access. В ней столбик с числами. Я хочу в этом столбце найти максимум и дальше с ним работать. Еслиб бы была обыкновенная таблица StringGrid, то без проблем организовал бы цикл.. А так что то не получается, не знаю как получить доступ к каждой ячейке столбца чтобы написать нужный цикл. А через SQL конечно он мне отображает.. Я новичок.. но вроде не запутанно написал |
|
#7
|
||||
|
||||
|
Пусть, MainConnection:TADOConnection - это твое соединене с базой, тогда:
Код:
function GetFldMax(aTableName,aFieldName:String):Integer;
var
Q:TADOQuery;
begin
Q:=TADOQuery.Create(nil);
with Q do
begin
Connection:=MainConnection;
SQL.Text:=Format('SELECT MAX([%s]) as MAXIMUM FROM [%s]',[aFieldName,aTableName])
Open;
Result:=FieldByName('MAXIMUM').AsInteger;
Close;
Free;
end;
end;Это, так сказать, скелет функции, тут еще требуется сделать обработчик ошибок. пример использования: Код:
var
MyMax:Integer;
begin
MyMax:=GetFldMax('Table1','Field1');
...
end; |
|
#8
|
||||
|
||||
|
Цитата:
Ну уж если доступ к каждой ячейке столбца тогда: Код:
...
while (not ADOTable1.Eof) do
begin
ADOTable1.FieldByName('имя_поля').AsInteger;//Вот твоё поле!
ADOTable1.Next();
end;
... |
|
#9
|
|||
|
|||
|
Цитата:
Цитата:
|