Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 20.05.2011, 19:25   #1
allegator333
 
Регистрация: 20.05.2011
Сообщений: 6
Восклицание Сортировка кода в таблице после удаления

у меня такая проблема, есть база , есть таблицы, в каждой таблице я использую автоматическое добавление кода " программным путем"
вот пример: <<<(procedure TDM_uchet.Tl_klient_avtoAfterInsert (DataSet: TDataSet);
begin
Tl_klient_avtokod_avto.value:=DM_uc het.Tl_klient_avto.RecordCount + 1 ;
end>>>
добавляет отлично , но есть косяг, допустим у меня есть 3 записи,
я добавляю еще 1(код_авто:=количество записей +1 ).
В сумме у меня 4 записи , у четвертой(4) записи код равен 4. И вот начинается сам косяг , я удаляю третюю(3) запись , потом сразу добавляю еще одну(1) запись, и получается она опять присваивает код 4, но у меня такой уже есть и выводится ошибка о повторном вводе ключа.
Что делать , может кто предложит какую нибудь сортировку программным путем , либо другое добавление код_авто.
allegator333 вне форума Ответить с цитированием
Старый 20.05.2011, 20:13   #2
belyjj
Пользователь
 
Регистрация: 20.03.2011
Сообщений: 29
По умолчанию

Делай либо тип поля счётчик, или запросом находи мах и к нему прибавляй 1, а не к кол-ву записей
belyjj вне форума Ответить с цитированием
Старый 20.05.2011, 20:15   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Во первых код нужно оформлять тегом code (решетка)
по существу, в разных БД подход свой, но суть одна, для идентификатора записи в основном используют (автоинкремент), это числовое поле в котором каждое значение уникально, подход зависит от БД(гдето используется триггер и генератор, гдеето есть счетчики).
vovk вне форума Ответить с цитированием
Старый 20.05.2011, 20:45   #4
allegator333
 
Регистрация: 20.05.2011
Сообщений: 6
По умолчанию

во первых база Access , во вторых у меня в задание указано что нельзя в базе делать поле счетчик , а в третих как найти мах из значений в таблице?
allegator333 вне форума Ответить с цитированием
Старый 20.05.2011, 21:30   #5
belyjj
Пользователь
 
Регистрация: 20.03.2011
Сообщений: 29
По умолчанию

Код:
 Qry1.SQL.Clear;
           qry1.Close;
           qry1.SQL.Add('select max([Номер записи]) as R from Цены');
           qry1.Open;
           nzap:=qry1.fieldbyname('R').asinteger+1;
belyjj вне форума Ответить с цитированием
Старый 20.05.2011, 21:57   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,943
По умолчанию

select count() заменить на select max(код)
при определении нового кода надо брать не число записей(count) а макисальный номер (max(код))
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После удаления перестали работать стили mrgrudge PHP 3 01.12.2010 14:35
Создание пользователя, после его удаления Droid БД в Delphi 0 21.05.2010 00:39
Сохранение файла после изменения/удаления записи (Delphi) Kurai Помощь студентам 2 15.05.2010 23:21
Очищение DateTimePicker после удаления записи Droid БД в Delphi 9 21.10.2009 15:57
Очистка формата после удаления макроса valerij Microsoft Office Excel 2 14.06.2008 12:00