|
#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
|
|||
|
|||
Цитата:
Цитата:
|