![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
каким сделать интерфейс
tchn1 © (2004-01-30 03:21:00)
как бы вопрос полаконичнее сформулировать?...
интересно, кто как поступает в такой ситуации?
есть форма, на которой пара гридов, привязанных к паре таблиц mssql. таблицы соотносятся "многие-к-одному".
т.е. нужно завести новую запись в главную таблицу, после этого завести в дочернюю таблицу записи, соответствующие этой новой записи в главной. для связи используется первичный ключ в главной - автоинкрементное поле, значение которой генерится в момент добавления записи на сервере, а не на стороне клиента (в этом-то и загвоздка). для того, чтобы можно было нормально добавлять записи в дочернюю таблицу, требуется, чтобы был сгенерен этот самый идентификатор в главной. получается, что пользователь должен как минимум два раза подтвердить ввод - сначала под главной таблицей, потом под дочерней. а может кто-нибудь придумал как здесь схитрить, и сделать это самое подтверждение только один раз?
tchn1 (2004-01-30 23:55:00) [1]
да не пользуем мы ADO, мы юзаем SQLDirect, однака, но какая блин разница?!
> Deniz ©
причем тут генераторы? генераторы тоже срабатывают в момент ПОДТВЕРЖДЕНИЯ ввода, так что ИБ далеко в этом смысле не ушла от MSSQL, да и вообще - MSSQL - нормальная платформа, пока все устраивает, у меня вопрос о том, КАК ИНТЕРФЕЙС ПОСТРОИТЬ?
Academic (2004-01-30 14:23:00) [2]
При использованиии TADOTable, выставляем своство TableDirect.
В момент добавления записи в главную таблицу сразу же отображается значение IDENTITY.
Nikolay M. (2004-01-30 14:08:00) [3]
> Deniz © (30.01.04 12:59) [6]
На sql.ru было много дебатов на эту тему. Ни к чему определенному, помнится, не пришли, только раскололись на несколько лагерей и у каждого были свои аргументы.
Deniz (2004-01-30 12:59:00) [4]> Nikolay M. © (30.01.04 09:15) [5]
Прочитал http://www.delphimaster.ru/cgi-bin/forum.pl?id=1075377113&n=1пост Ega23 © (29.01.04 15:31) [5]
"А вообще я в таких случаях не пользуюсь триггерами (кстати, ещё один минус в их сторону. Ну не люблю я их.), а пользуюсь ХП."
Мой вывод(если что поправьте): получается что, из-за "кривой" реализации @@IDENTITY и частично автоинкрементных полей, воспользоваться механизмом передачи на клиента уникального значения сложно, т.е. сам механизм придется реализовывать программисту и следить за уникальностью.
Неужели нет в MSSQL ничего подобного, как генераторы в IB или последовательности в Oracle? Если есть, то покажите пример для tchn1 © (30.01.04 03:21)
Nikolay M. (2004-01-30 09:15:00) [5]Вчера ж только было!
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1075377113&n=1
Рекомендую не делать через @@IDENTITY, как там описывается, а посмотреть [3] и найти ту статью на rsdn.
ЮЮ (2004-01-30 07:50:00) [6]
>А что в MSSQL нельзя получить ID на клиенте и не использовать автоинкрементное поле?
По большому счёту нельзя
>сделать это самое подтверждение только один раз
"подтверждение" - это уже из твоего клиента. И кто мешает "слить" код в одно место и не требовать "подтверждение" дважды?
Deniz (2004-01-30 07:31:00) [7]
Что значит геморрой? Это у тебя сейчас геморрой для юзера :)
tchn1 (2004-01-30 07:26:00) [8]
да можно, но зачем этот геморрой?
Deniz (2004-01-30 06:46:00) [9]
А что в MSSQL нельзя получить ID на клиенте и не использовать автоинкрементное поле? Проблема бы решилась.