Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBGrid [D5, IB5.x]


Samvel ©   (2002-09-24 11:26:00) 

Растолкуйте популярно как при добавлении данных в DBGrid сделать так чтобы в поле id автоматически добавлялось максимальное значение по этому полю
Самвел


Anatoly Podgoretsky   (2002-09-25 11:15:00) [1]

Если строго по вопросу, то все будет работать в любой сети, а вот правильный ли вопрос тут большое сомнение. Peter Gluhiy © (24.09.02 15:57) ответил правильно, за исключение не понятно почему он решил в ветке else присваивать 1, что резко противоречит условию вопроса, надо или 0 или null (привильнее)


Desdechado   (2002-09-25 11:05:00) [2]

ID есть ID, а MAX есть MAX - и это не одно и то же.


Peter Gluhiy   (2002-09-24 17:25:00) [3]

Prooksius © (24.09.02 17:02)
По вопросу я понял, что Samvelу не нужно уникальное ID, а просто максимальное.


Prooksius   (2002-09-24 17:02:00) [4]

2 Peter Gluhiy © (24.09.02 16:49)

> Да я просто для примера написал. Сам я его, конечно, не
> использую.

Прежде, чем советовать, надо хотя бы подумать.
Или проверить.
В сети такое получение ID не будет работать .

Я понимаю, к примеру, дать намек на решение, не писать всего, чтобы человек подумал сам хоть чуть-чуть. Но писать просто неправильные советы - нельзя.


Desdechado   (2002-09-24 16:58:00) [5]

хозяин-барин. Мое дело предупредить. Когда получишь парочку-тройку одинаковых значений для первичного ключа, вспомнишь.
А ошибку Дельфи давала, т.к. у тебя для поля стоит REQUIRED, а еще и некэшированная вставка.
Да и зачем юзеру знать ID?


Peter Gluhiy   (2002-09-24 16:49:00) [6]

Desdechado © (24.09.02 16:24)
>Да и TTable для IB слишком неразумно использовать.
Да я просто для примера написал. Сам я его, конечно, не использую.


Desdechado   (2002-09-24 16:43:00) [7]

хозяин-барин. Мое дело предупредить. Когда получишь парочку-тройку одинаковых значений для первичного ключа, вспомнишь.
А ошибку Дельфи давала, т.к. у тебя для поля стоит REQUIRED, а еще и некэшированная вставка.
Да и зачем юзеру знать ID?


Samvel   (2002-09-24 16:32:00) [8]

Для Desdechado
все работает в сетевой проге
так что ненадо


Samvel   (2002-09-24 16:30:00) [9]

Спасибо брат Peter Gluhiy
наконец получилось, а то я все по наивности пробовал BeforeInsert
так как думал что вставка должна быть до того, а Delphi мне ошибку я аж расстроился
Еще раз спасибо


Desdechado   (2002-09-24 16:24:00) [10]

2 Peter Gluhiy
это годится только в однопользовательской несетевой программе. Иначе обречено на провал.
Да и TTable для IB слишком неразумно использовать.


Peter Gluhiy   (2002-09-24 15:57:00) [11]

Берешь TQuery, вставляешь запрос: select Max(ПОЛЕ) from ТАВЛИЦА.
В таблице, подключенной к DBGrid, обрабатываешь AfterInsert.
Примерно так:
procedure TDataModule.Table1AfterInsert(DataSet: TDataSet);
begin
Query1.Open;
if Query1.Fields[0].Value <> null then
Table1.FieldByName(" ПОЛЕ").Value := Query1.Fields[0].Value
else Table1.FieldByName(" ПОЛЕ").Value := 1;
Query1.Close;
end;
Удачи!


Samvel   (2002-09-24 15:26:00) [12]

Большое спасибо за советы


Samvel   (2002-09-24 13:45:00) [13]

Дело в следующем
нужно при добавлении новой строки в DBGrid автоматически добавить макс значение (по подобию как это происходит в связаных таблица главный-подчиненный при добавлении в подчиненой табл автоматически по полю связи появляется значение из главной табл)


Johnmen   (2002-09-24 11:51:00) [14]

см.доки по IB : генераторы, триггеры, ХП


Desdechado   (2002-09-24 11:48:00) [15]

для этого есть триггер, генератор, функция gen_id - в ИБ.
а также Refresh для строки датасета под гридом


Наверх

Титульная страница Поиск, карта сайта Написать письмо