Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2009, 14:18   #1
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию Максимум в столбце DBGrid ...?

Всем привет. не подскажите как найти максимальное значение в столбце,... суть вообще в том, что мне нужен Счетчик (ручной), чтобы при добавлении записи прибавлялось значение +1 от максимума...
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Старый 15.12.2009, 14:57   #2
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

Здравствуйте. Самый простой способ использовать SQL запрос
Код:
SELECT max(<имя столбца>) AS <имя которое хотите чтоб было>
From <имя таблицы>;
Вот к примеру мой вариант, который ишет элемент с самым большим значением ключевого поля id

Код:
 with DMBase.adoquery1 do begin
     Close;
     SQL.Clear;
      SQL.Add('Select max(Accessories.id) ' +
             'FROM Accessories;');
     Open;
    ID := Fields.Fields[0].AsInteger + 1;
    end;
Id - переменная целоги тапа, в которую запишеться максимальное значение из столбца id +1
тока учтите что нужно выполнять проверки, т.к. строк в таблице может не оказаться и тогда будет ошибка при присвоении.
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо

Последний раз редактировалось rockedit; 15.12.2009 в 15:00.
rockedit вне форума Ответить с цитированием
Старый 15.12.2009, 15:11   #3
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию

Вроди бы работает ), не подскажите еще как полсе того как нашел ID+1 добавить запись правлено? А то, как бы я не пробывал все время ошибки.
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Старый 15.12.2009, 15:17   #4
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

Добавление новой записи(тут толькот основные операторы т.е. не весь код)
Код:
  with DMBase do begin
   KOmTable.Insert; // добовляем новую запись
      if KomTable.Modified then // если внесены изменения
              KomTable.Post; //сохряняем изменения
      end;
Редактирование
Код:
        KomTable.Edit; // раим редактирования
       DMBase.KomTable.Fields.Fields[5].AsString := <новое значение>;
       KomTable.Post;
я думаю вы сообразите что к чему)
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 15.12.2009, 15:25   #5
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию

Ну я имел в виду, как объеденить эти примеры в один, чтобы при добавлении в поле где нашли max ID, добавилось ID+1, ну и в остальные существующие поля, остальная инфа...
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Старый 15.12.2009, 15:27   #6
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

так бы и писали) тогда вам нужно использовать UPDATE, почитайте об этом запросе в интернете. или подождите я отвечу позже.
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 15.12.2009, 15:37   #7
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию

Я вроди так и написал ))
Цитата:
чтобы при добавлении записи прибавлялось значение +1 от максимума...
Если не против, я подожду ))
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Старый 15.12.2009, 17:29   #8
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию

rockedit почитал про UPDATE , но что-то не нашел ни чего путного...
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Старый 15.12.2009, 17:33   #9
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

Допустим у вас есть таблица Table1(id, Name) вам нужно добавить в нее новую строку, при условии что в роли ключа у вас не автоинкрементное поле.
1) Если вдруг строк в таблице нет, то ваша запись будет первая
Проверяем
Код:
if Table1.RecordCount = 0 then
 Begin
   Table1.Insert;
    Table1.Fields.Fields[0].AsInteger := 1;
   ......
   Table1.Post;
 end;
Если же записи уже есть, то исчем максимальную и к ней добовляем 1
тут есть два пути. либо использовать компонент Query и выполнить данное действие с помошью запросов
Код:
 with DMBase.adoquery1 do begin
     Close;
     SQL.Clear;
      SQL.Add('Select max(Table1.id) ' +
             'FROM Table1;');
     Open;
    ID := Fields.Fields[0].AsInteger + 1;
     Close;
     SQL.Clear;
     SQL.add(format ( 'INSERT INTO TABLE1  ' +
                    '   ( id, Name ) VALUES (%s,%s) ;',[IntToStr(ID),Name]));
     ExecSQL;

end;
Сдесь ID переменная целого типа
Или же вам нужно в цикле найти максимальный элемент
пример без SQL запроса
Код:
max := Table1.Fields.Fields[0].AsInteger;
Table1.First;
 for i:=1 to Table1.RecordCount do
  Begin
     if max < Table1.Fields.Fields[0].AsInteger then
        max := Table1.Fields.Fields[0].AsInteger;
  Table1.Next;
  end;

Table1.Insert;
    Table1.Fields.Fields[0].AsInteger := max + 1;
   ......
   Table1.Post;
Примерно так)
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 15.12.2009, 17:50   #10
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию

Огромное спасибо!!! ))) Все работает! ))
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена в столбце siteograf Microsoft Office Excel 5 19.10.2009 02:27
Максимум суммы 2 элементов Siluet Общие вопросы Delphi 15 27.09.2009 00:20
Максимум если. Baloo007 Microsoft Office Excel 3 08.07.2009 13:01
максимум meteor Microsoft Office Excel 2 06.12.2008 13:08
как отсортировать массив под данный отрезок и как минимум и максимум из него найти SIEGER Паскаль, Turbo Pascal, PascalABC.NET 1 20.11.2008 08:58