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

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

Как узнать номер новой записи. [D7, Paradox]


Tempo ©   (2004-07-20 09:03:00) 

Вопрос, есть БД Paradox. В нее добавляются записи, удаляются... Есть ключевое числовое поле, которое автоматически при добавлении записи увелифивается на 1. Допустим, было в БД 3 записи, их удалили, но следующая запись все-равно будет под номером 4. Как мне узнать до добавления записи какой будет её номер?


Anatoly Podgoretsky   (2004-07-21 09:34:00) [1]

Главное правильный подход к проектированию базы.
А у тебя он неправильный, особенно в выборе формата.


Tempo   (2004-07-21 08:51:00) [2]


> Ты сам пишешь что надо удалить, а это значит, что ты сохранил,
> а это значит что у тебя уже есть номер.

Этот номер толже часто вычисляется ошибочно
Но я понял на что вы намекаете, СПАСИБО! Как я сам не догадался=)))


Anatoly Podgoretsky   (2004-07-21 08:44:00) [3]

Ты сам пишешь что надо удалить, а это значит, что ты сохранил, а это значит что у тебя уже есть номер.
На самом деле тебе не нужно автоинкриментное поле, а нужно manual и не инкриментное (TaskID), а любое. Заодно решишь проблему разрушения этого автоинкриментного поля.


Tempo   (2004-07-21 08:38:00) [4]


> Anatoly Podgoretsky

Извините, не понял? Я же не знаю ID записи, т.к. они не по-порядку


Anatoly Podgoretsky   (2004-07-21 08:35:00) [5]

Удалять все подчиненые записи.


Tempo   (2004-07-21 08:31:00) [6]

Хорошо, тогда такой вопрос.
Есть 3 таблицы Pаradox. Пишется программа для backupа. В первой хранится общая информация о заданиях - название, тип и активность. Во второй есть только два поля - SID (в нем указывается ID записи из первой таблицы, к которой принадлежит эта строка) и Files - имя файла. В третьей хранится информация о расписании, есть поля - OID (опять ссылается на ID из первой таблицы), типа расписания (еженедельно, ежечасно и т.п.), время и т.д. Так вот, для добавления задания есть отдельная форма, на ней я уместил все, кроме расписания, точнее есть только компнент ListBox, который содержит записи об расписании в читабельном виде и етсь кнопки добавить и удалить. Так вот, при нажатии кнопки добавить открывается другая форма, в которой есть всякие чекбоксы и т.п, зер выбирает параметры, жмет добавить, при закрытии автоматом эти данные сразу заносятся в третью таблицу (т.к. может быть несколько расписаний). НО, пользователь может же в самый последний момент и передумать, и уже в форме добавления ПРОЕКТА нажать отмену, тогда нужно эти записи о рсписании тоже удалить? Как быть?


Anatoly Podgoretsky   (2004-07-20 09:15:00) [7]

Tempo   (20.07.04 09:03)  
Tempo   (20.07.04 09:10) [4]

Нельзя, до записи в таблицу это значение не существует!!!


Reindeer Moss Eater   (2004-07-20 09:12:00) [8]

Но узнать по-любому можно,

Ага. Щазззз.

Про многопользовательский случай не забыл?


Tempo   (2004-07-20 09:10:00) [9]

Да, автоинкрементное поле.
Но узнать по-любому можно, только мне такой метод не по душе, сперва добавлять запись временную, затем считывать её ID, увеличивать её на 1, а затем удалять временную запись. Работать будет без отказно, но слишком просто.


Reindeer Moss Eater   (2004-07-20 09:06:00) [10]

...все-равно будет под номером 4.
У него Autoinc


Johnmen   (2004-07-20 09:05:00) [11]

MAX(ключевое числовое поле,)+1

А зачем вообще это надо ?


Reindeer Moss Eater   (2004-07-20 09:05:00) [12]

Если ты про автоинкрементное поле, то никак ты не узнаешь


Наверх

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