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