Выпуск № 432 от 07.07.2009, 21:35
Администратор рассылки: Victor Pyrlik, Модератор
В рассылке: подписчиков - 594, экспертов - 165
В номере: вопросов - 1, ответов - 2
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170108: Здравствуйте эксперты. Как правильно реализовать следующую задачу. Есть контрол ListVew c чекбоксами. Контрол заполнен всеми записями из таблицы Procs, содержащей поля ID и Proc_name. Есть ComboBox, в котором есть 3 вида ре...
Вопрос № 170108:
Здравствуйте эксперты. Как правильно реализовать следующую задачу. Есть контрол ListVew c чекбоксами. Контрол заполнен всеми записями из таблицы Procs, содержащей поля ID и Proc_name. Есть ComboBox, в котором есть 3 вида ремонта. При выборе нужного ремонта -в ListVew отмечаются процессы(чекбоксы) соответствующие данному ремонту, согласно другой таблицы rem_proc, с полями rem(номер ремонта) и idproc(ID процесса из таблицы Procs). Пользователь может сам определить
входящие процессы в состав ремонта, устанавливая/снимая галки в чекбоксах. Для подтверждения данных изменений пользователь нажимает кнопку. так вот вопрос как правильно реализовать изменения в таблице rem_proc, данные(соответствие процесса ремонту) там могут и добавляться и удаляться. варианты которые я предполагаю, например для ремонта 1. 1.Удаление всех записей из rem_proc с условием WHERE rem=1. Затем поэлементная проверка контрола Li
stVew и если элемент выбран добавление его в таблицу. Мне не очень нравиться, что если вдруг сбой ПО или другие причины и данные были удалены, но не успели добавиться новые, может произойти потеря. 2. Цикл поэлементной проверки контрола ListVew и в зависимости от состояния элемента -добавление или удаление записи. Но тут возможно добавление повторных записей, поэтому наверное перед добавлением следует осуществлять поиск по таблице на присутствие существующих данных. Второй вариант более безопасный,
но обращений к таблице будет больше, может это не критично. Число записей в таблице 500-1000. --- Может есть другой вариант? Например создание временной таблицы на основании данных чекбоксов и затем объединения временной таблицы и таблицы rem_proc. При котором нужные записи добавятся, а не нужные удаляться :-) Вообщем что посоветоваете эксперты? Спасибо.
Можно завести два множества: добавляемые записи и удаляемые записи. При установке чекбокса добавлять idproc в первое множество, при снятии - во второе. Затем при коммите исключить их пересечение и поменять состояние базы данных (желательно в рамках одной транзакции, чтобы обеспечить атомарность).
----- Good judgement comes from experience, and experience comes from bad judgement.
Ответ отправил: Ross, Практикант
Ответ отправлен: 02.07.2009, 22:58
Оценка ответа: 5 Комментарий к оценке: Спасибо, за ответы! Это то, что мне нужно было :-)
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251774
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Digitall, 2-й класс :
Здравствуйте, PsySex. Честно говоря, так и не понял что у вас куда и откуда заносится, какая БД и какая среда разработки, но это не особо важно. При количестве записей в 500 миллионов, ваш вопрос был бы актуален, а имея всего 500 записей, советую вам поступить по второму варианту + сделать проверку на наличие повторных записей в триггере вставки.
Ответ отправил: Digitall, 2-й класс
Ответ отправлен: 03.07.2009, 09:24
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251791
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.