![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 для строки датасета под гридом