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

Вниз

каким сделать интерфейс   Найти похожие ветки 

 
tchn1   (2004-01-30 03:21) [0]

как бы вопрос полаконичнее сформулировать?...
интересно, кто как поступает в такой ситуации?
есть форма, на которой пара гридов, привязанных к паре таблиц mssql. таблицы соотносятся "многие-к-одному".
т.е. нужно завести новую запись в главную таблицу, после этого завести в дочернюю таблицу записи, соответствующие этой новой записи в главной. для связи используется первичный ключ в главной - автоинкрементное поле, значение которой генерится в момент добавления записи на сервере, а не на стороне клиента (в этом-то и загвоздка). для того, чтобы можно было нормально добавлять записи в дочернюю таблицу, требуется, чтобы был сгенерен этот самый идентификатор в главной. получается, что пользователь должен как минимум два раза подтвердить ввод - сначала под главной таблицей, потом под дочерней. а может кто-нибудь придумал как здесь схитрить, и сделать это самое подтверждение только один раз?


 
Deniz   (2004-01-30 06:46) [1]

А что в MSSQL нельзя получить ID на клиенте и не использовать автоинкрементное поле? Проблема бы решилась.


 
tchn1   (2004-01-30 07:26) [2]

да можно, но зачем этот геморрой?


 
Deniz   (2004-01-30 07:31) [3]

Что значит геморрой? Это у тебя сейчас геморрой для юзера :)


 
ЮЮ   (2004-01-30 07:50) [4]

>А что в MSSQL нельзя получить ID на клиенте и не использовать автоинкрементное поле?

По большому счёту нельзя

>сделать это самое подтверждение только один раз

"подтверждение" - это уже из твоего клиента. И кто мешает "слить" код в одно место и не требовать "подтверждение" дважды?


 
Nikolay M.   (2004-01-30 09:15) [5]

Вчера ж только было!
http://delphimaster.net/view/3-1075377113/
Рекомендую не делать через @@IDENTITY, как там описывается, а посмотреть [3] и найти ту статью на rsdn.


 
Deniz   (2004-01-30 12:59) [6]

> Nikolay M. © (30.01.04 09:15) [5]
Прочитал http://delphimaster.net/view/3-1075377113/ пост Ega23 © (29.01.04 15:31) [5]
"А вообще я в таких случаях не пользуюсь триггерами (кстати, ещё один минус в их сторону. Ну не люблю я их.), а пользуюсь ХП."

Мой вывод(если что поправьте): получается что, из-за "кривой" реализации @@IDENTITY и частично автоинкрементных полей, воспользоваться механизмом передачи на клиента уникального значения сложно, т.е. сам механизм придется реализовывать программисту и следить за уникальностью.
Неужели нет в MSSQL ничего подобного, как генераторы в IB или последовательности в Oracle? Если есть, то покажите пример для tchn1 © (30.01.04 03:21)


 
Nikolay M.   (2004-01-30 14:08) [7]


> Deniz © (30.01.04 12:59) [6]

На sql.ru было много дебатов на эту тему. Ни к чему определенному, помнится, не пришли, только раскололись на несколько лагерей и у каждого были свои аргументы.


 
Academic   (2004-01-30 14:23) [8]

При использованиии TADOTable, выставляем своство TableDirect.
В момент добавления записи в главную таблицу сразу же отображается значение IDENTITY.


 
tchn1   (2004-01-30 23:55) [9]

да не пользуем мы ADO, мы юзаем SQLDirect, однака, но какая блин разница?!

> Deniz ©

причем тут генераторы? генераторы тоже срабатывают в момент ПОДТВЕРЖДЕНИЯ ввода, так что ИБ далеко в этом смысле не ушла от MSSQL, да и вообще - MSSQL - нормальная платформа, пока все устраивает, у меня вопрос о том, КАК ИНТЕРФЕЙС ПОСТРОИТЬ?



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

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

Наверх




Память: 0.47 MB
Время: 0.034 c
14-80148
SergP
2004-02-02 05:21
2004.02.25
MySQL. Не работает запрос. Что можно сделать?


1-80001
Saris
2004-02-09 17:02
2004.02.25
Создание объектов в Rave reports


1-79991
Galin
2004-02-13 14:04
2004.02.25
Как объявить константу в классе, чтобы использ при объяв массива?


14-80273
BlackLord2003
2004-02-04 09:12
2004.02.25
MyDoom


8-80030
Pepperok
2003-10-22 12:51
2004.02.25
Winamp PlayList and Jumper





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский