Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / что делать при редактировании, когда удалены справочники / 23 сообщений из 23, страница 1 из 1
13.11.2003, 17:25
    #32323462
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Данные отображаются в гриде. Редактирование ведется в отдельной форме. Для выборки занчений из справочников исп-ся LookUpComboBox. Потом, н-р, удалаяется кто-то из справочника, реально из таблицы он не удаляется, а просто помечается как удаленный и не показывается. В этом случае в LookUpComboBox естественно ничего не отображается. Собственно вопрос, кто как в таких ситуациях поступает.
...
Рейтинг: 0 / 0
13.11.2003, 18:08
    #32323524
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Не понял.
Что значит автор писал:В этом случае в LookUpComboBox естественно ничего не отображается.

Если все удалили из справочника, да даже и в любом случае, всегда есть возможность туда добавить :)

-- Tygra's --
...
Рейтинг: 0 / 0
13.11.2003, 18:09
    #32323528
oleg_e
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Нельзя давать удалять.
Это нарушает целостность.
...
Рейтинг: 0 / 0
14.11.2003, 08:39
    #32323886
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
2oleg_e

реально ничего не удаляется, ну просто люди не хотят видеть запись если считают, что ее надо удалить

2tygra

в табице есть поле "deleted" и там ставится признак - удален/не удален. Просто на клиенте при редактированиии спр-ка показываются записи, помеченные как неудаленные. Поэтому если запись помечена как удаленная, то в датасете ее нет и соответственно LookUpComboBox ее найти не может. Вот я и спрашиваю, кто что делает в такой ситуации.
...
Рейтинг: 0 / 0
14.11.2003, 08:45
    #32323891
Adony
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Перечитал несколько раз, так и не понял, а что собственно нужно? Напрашивается один ответ: В таких ситуациях поступаю правильно.
...
Рейтинг: 0 / 0
14.11.2003, 09:13
    #32323925
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
>Перечитал несколько раз, так и не понял, а что собственно нужно

Если в датасете не отображать записи, помеченные как удаленные, то при редактировании формы DBlookUpComboBox, ссылающийся на запись, помеченную как удаленная, не найдет эту запись и получится, что как будто данных из этого справочника нет. Для того чтобы все таки отобразить такую запись в DBlookUpComboBox можно н-р в датасет выбирать все записи из справочника, но может есть еще какие-то варианты, вот я и спрашиваю, вдруг еще кто что подскажет. Прошу прощения, если не очень понятно излагаю.
...
Рейтинг: 0 / 0
14.11.2003, 10:29
    #32324022
Могун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Заведи в справочнике запись специального вида - <Нет данных>
...
Рейтинг: 0 / 0
14.11.2003, 10:34
    #32324029
oleg_e
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
- использовать два датасета справочника, один для отображения, другой для лукапа;
- не показывать данные для которых соответствующее поле помечено как удаленое.
...
Рейтинг: 0 / 0
14.11.2003, 10:55
    #32324074
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Теперь и мне стало понятно.

Дык такого не может быть - нельзя удалить значение из справочника, если на него кто-то ссылается.
Только один вариант - показывать его, но выбирать не давать при редактировании. И никаких нет данных !!! Есть они. Но уже не используются для выбора. А для показа - конечно.

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 11:05
    #32324101
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Ну, в общем, поступить можно двумя путями - правильно и так, как я подскажу. Сначала - правильный путь:
Запрещаем удалять позиции справочных таблиц, если на них есть ссылки в других (назовем их рабочими) таблицах. Тогда проблема отпадает сама собой.
Теперь - мой вариант:
2. В рабочих таблицах храним не ссылку на справочную таблицу, само значение, извлеченное из справочника в момет создания/изменения записи.
Тогда в форме редактирования поле редактуемое поле отображается не LookupComboBox, а простым Edit (DBEdit), справа от которого размещаем кнопку с нарисованной "стрелкой вниз". Хотим изменить данные - меняем прямо в Edit, хотим извлеч из справочника - жмем на кнопку, активизируется справочник, выбираем строку из справочника, поставляем значении в соответсвующее поле рабочей таблицы, закрываем справочник, рефрешим запись в рабочей таблице. Все.
...
Рейтинг: 0 / 0
14.11.2003, 11:34
    #32324173
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
2Малиновский Владимир

>2. В рабочих таблицах храним не ссылку на справочную таблицу, само значение, извлеченное из справочника в момет создания/изменения записи
Тогда в форме редактирования поле редактуемое поле отображается не LookupComboBox

т.е. е LookupComboBox совсем не использовать, а для выбора из справочника показывать всю таблицу спр-ка целиком в отдельной форме?
...
Рейтинг: 0 / 0
14.11.2003, 12:07
    #32324250
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Нееееееееееееееееее, не слушай его !!!!!!!!!!!!!!!!!!!!!!!!

2 Малиновский Владимир
За такие советы вот такое грозит:


2 SergBBS

Никогда не делай так, никогда .
Никаких хранящихся значений - только ссылка на справочник. Представь - 2000000 записей с таким значением и вдруг его нужно поменять. Да еще поменяв, ошиблись. И что, ты будешь все 2000000 записей апдейтить? А как поиск по ним делать? Это самый дурной тон программирования, какой только может быть, после хранения значений справочника в одном текстовом поле :)

Уже подсказали как. Много раз. Так и делай.

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 12:32
    #32324291
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Ну, Тигра, ну, агрессор!

Все зависит от конкретной задачи.
Пример - счета формируются по позициям прайса.
Затем позиции прайса корректируются (исправляются ошибки в наименовании, цена, налоги и т.п.). А счета уже сформированы - и они должны хранить данные на момент их формирования.
И что - сообщать клиентам - "Пожалуйста, давайте повторим транзакцию (в смысле - оплату счета), мы изменили наименование товара, а в целях обеспечения ссылочной целосности и правильной нормальзации БД 3-го уровня мы не храним избыточных данных".

Все будут просто в восторге.
Впрочем, возможны варианты (типа хранения истории записей и проч...)

А при работе с базой изображений? Вот у нас дизайнеры лепят что-то, извлекая образцы из справочника. Круто было бы, если бы их босс, поменяв что-то в образцах, уведел, как все проекты волшебным образом поменялись бы.

Все зависит от конкретной задачи.
...
Рейтинг: 0 / 0
14.11.2003, 12:35
    #32324298
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
связать через другой ДатаСет (забацать новый где, where deleted = 1, не будет )
_____________
__
...
Рейтинг: 0 / 0
14.11.2003, 12:51
    #32324322
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
автор писал:Пример - счета формируются по позициям прайса.
Затем позиции прайса корректируются (исправляются ошибки в наименовании, цена, налоги и т.п.). А счета уже сформированы - и они должны хранить данные на момент их формирования.
И что - сообщать клиентам - "Пожалуйста, давайте повторим транзакцию (в смысле - оплату счета), мы изменили наименование товара, а в целях обеспечения ссылочной целосности и правильной нормальзации БД 3-го уровня мы не храним избыточных данных".

А ты что, в счетах хранишь названия?
Мать их........!!!!!
И причем тут правка наименования и оплата счета? Это никак не связано. Ты же не цены меняешь. Один раз распечатал так, другой раз имена правильные напечатаются. Или во всех счетах нименования править будешь?

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 13:00
    #32324339
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Короче, ссылочная целостность и глобальная нормализация - форевер, а клиенты пускай учат реаляционную алгебру...
...
Рейтинг: 0 / 0
14.11.2003, 13:03
    #32324347
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Пускай.. :)

Тут программку видели - из налоговой инспекции прислали, чего-то там заполнять. Вот это шедевр! Все справочники лежат в одном текстовом поле , ссылок конечно на них нет, только значения, да еще и по нескольку значений. Ееее. Мы то хотели симпортировать туда данные, а как увидели. И самое главное что программа сделана в прошлом году.

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 14:59
    #32324590
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
А вот еще вопрос. Как лучше из справочника значения выбирать: DBLookUpComboBox-ом или в отдельной форме показать таблицу справочник и там выбрать?
...
Рейтинг: 0 / 0
14.11.2003, 15:36
    #32324688
Могун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Зависит от кол-ва значений и сложности справочника
...
Рейтинг: 0 / 0
14.11.2003, 15:38
    #32324703
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
>Зависит от кол-ва значений и сложности справочника

если несколько тысяч значений, то что?
...
Рейтинг: 0 / 0
14.11.2003, 15:41
    #32324710
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
То тогда у тебя должна быть естественно отдельная форма, да к тому же которая не просто сразу все эти тысячи показывает, а в которой ты вводишь часть названия и по нему выдаешь список значений. Иначе клиент помрет. И юзер тоже :)

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 15:42
    #32324715
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Возьми библиотеку EhLib -там чудесные Contrals, и среди них - TDBLookupComboBoxEx, там внутрь компонента можно повесть кнопочку, по которой можно вызывать форму. Хочешь - выпадающий список, хочешь - справочник на отдельной форме, и все в одном флаконе. Дополнительный бонус - в справочнике можно ввести недостающие значения. По-моему, предложенный вариант удобен в случае, если юзер сам и расширяет справочник - привычно посмотрел в лукапе - не нашел, нажал кнопку, открылась форма со справочником, ввел новые данные, выбрал значение, закрыл справочник. Возможны варианты.
...
Рейтинг: 0 / 0
14.11.2003, 16:33
    #32324858
SergBBS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что делать при редактировании, когда удалены справочники
Всем спасибо!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / что делать при редактировании, когда удалены справочники / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]