Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Как узнать номер новой записи.   Найти похожие ветки 

 
Tempo   (2004-07-20 09:03) [0]

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


 
Johnmen ©   (2004-07-20 09:05) [1]

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

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


 
Reindeer Moss Eater ©   (2004-07-20 09:05) [2]

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


 
Reindeer Moss Eater ©   (2004-07-20 09:06) [3]

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


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

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


 
Reindeer Moss Eater ©   (2004-07-20 09:12) [5]

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

Ага. Щазззз.

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


 
Anatoly Podgoretsky ©   (2004-07-20 09:15) [6]

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

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


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

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


 
Anatoly Podgoretsky ©   (2004-07-21 08:35) [8]

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


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


> Anatoly Podgoretsky

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


 
Anatoly Podgoretsky ©   (2004-07-21 08:44) [10]

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


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


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

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


 
Anatoly Podgoretsky ©   (2004-07-21 09:34) [12]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
6-1087143199
KingDown
2004-06-13 20:13
2004.08.15
Получение кода страницы...


1-1091173128
Дрейфусятина
2004-07-30 11:38
2004.08.15
Как сделать хитрый поиск по листбоксу ?


14-1091116809
ghg
2004-07-29 20:00
2004.08.15
выбор директории


1-1091182188
BDenis
2004-07-30 14:09
2004.08.15
Копирование файлов в фоновом режиме


1-1091030683
Bloody-Wolf
2004-07-28 20:04
2004.08.15
Определение имени диска





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский