![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
говорят легко [D3, Paradox]
cOrps © (2003-01-23 11:09:00)Приветствую вас мастаки
Как сделать чтоб при добавлении новой записи в таблицу
числовое поле "номер" увеличивалось на единицу
надо чтоб оно было не автоинкриниментное.
Заранее хочу сказать что я в дельфи и ваще в программировании
неочень, по учебе понадобилось!
cOrps (2003-01-23 11:46:00) [1]простите за еще один глупый вопрос
а куда это все пишут ?:)
Заранее прошу меня непретиснять всякими приколами
Мне действительно надо это по учебе.
Я ваще на спортфаке учусь. По информатике препод
требовательный срыву недает.
MsGuns (2003-01-23 11:39:00) [2]"Легко" говорят те, кто написал 2-3 проги с парой таблиц, к тому же эти проги или вообще не юзаются или юзаются "По воскресеньям после понедельника".
Есть несколько способов для Парадокса:
1. Номер определяется как Max(Num)+1
2. Номер хранится в некоей таблице БД, где и модифицируется каждый раз при добавлении любым юзером новой записи (эмуляция генератора или автоинкремента для не клиент-серверных БД)
Оба способа имеют минуса, как-то:
-нет гарантии от KeyViolation (дублирования ключей)
-"дырки" в нумерации, возникающие при удалениях
-проблемы с массовыми вставками (Insert into ... Select From ..)
В общем, нормального, корректного и надежного способа получения первого "свободного" номера не существует (по крайней мере я об этом не знаю)
Johnmen (2003-01-23 11:34:00) [3]Как сказал Чудак не делай !!!
SELECT MAX(id)+1 FROM Table - нужное тебе значение
Чудак (2003-01-23 11:23:00) [4]если оно у тебя типа Number то можно сделать так:
Table1.Last;
k:=Table1.FieldByName("Number").AsInteger;
Table1.Append;
Table1.FieldByName("Number").AsInteger:=k+1;
Table1.Post;
где k указываешь типа k:integer; в разделе описания переменных var
Reindeer Moss Eater (2003-01-23 11:10:00) [5]числовое поле "номер" увеличивалось на единицу
По сравнению с чем?