|
|
|
| Подскажите плиз каким образом лучше сделать следующее. Есть таблица с заказами и есть открытая форма, в которой встроенная форма табличного вида, в которой отображено часть полей из Таблицы Заказы. Хочу в основной форме повесить кнопку "Удаление заказа", при нажатии на которой активная запись из встроенной формы (на которой до этого курсор мигал) перейдет из Таблицы "Заказы" в Таблицу "Удаленные заказы", т.е. из первой Таблицы удалится, а во второй появится. Причем перед удалением чтобы появилось окошко для ввода текста, в которой указать причину удаления. Далее этот введенный текст должен добавиться к тексту в поле "Примечание", либо не добавиться, а записаться в отдельное поле Таблицы "Удаленные заказы", которое тогда дополнительно предусмотрю. Вообще думал, что поля Таблиц "Заказы" и "Удаленные заказы" будут совпадать и добавление причины удаления все-таки будет дописываться к тексту в поле Примечание. | |
|
| |
|
|
|
| Всё правильно так и делай.. | |
|
| |
|
|
|
| таки так и делай. все верно. | |
|
| |
|
|
|
| неверно...
нет смысла гонять запись из одной таблицы в другую
вместо этого необходимо в таблице Заказы сделать дополнительное логическое поле "заказ удален"
в принципе может быть лучше сделать поле "статус заказа"
удален
отложен
выполнен
согласуется
и проч. | |
|
| |
|
|
|
| извиняюся, а если эти записи уже не нужны?
Только для истории....
То может их лучше в другую таблицу перебросить - в архив тасазать... | |
|
| |
|
|
|
| такой подход тоже есть - например по дате документа или при обслуживании БД (сжатие-отимизация)
даные сбрасываются в денормализованую таблицу во внешней БД,
но
1 не на каждом удалении записи а при оптимизации.
2 не в симметричную таблицу а в денормализованную | |
|
| |
|
|
|
| Спасибо ПОНЯТНО.
А в каком смысле "денормализованную" или (как понять денормализованную) | |
|
| |
|
|
|
| когда данные связанных таблиц и вычисляемые в запросах данные хранятся в таблице бэкапа в явном виде.
например если вы удалили запись
OrderID
CustomerID
EmployeeID
ProductID
PicePerUnit
Quantity
и сохранили в таблицу бэкапа в виде
1006
1234
7685
45008
300-00 рублей
4 штуки
то проку от такого бэкапа будет мало
Нужно
Срочный заказ от 12-07-1977
ЗАО Рога и Копыта (Москва Николоямская 56)
Парфенов Николай
Свеча стеариновая ГОСТ 34-000-9876-1950
300-00 рублей
4 штуки | |
|
| |
|
|
|
| Ещё раз СПАСИБО!
(теперь точно всё понятно...)
dimonicss, читаешь?Вникаешь? | |
|
| |
|
|
|
| и еще на это поле "статус заказа" выставить индекс с повторением
Хорошо бы еще поля дата изменения и автор (заполнять программно при изменении статуса) | |
|
| |
|
|
|
| Пытаюсь впитать мудрость описанную выше. Только если есть примеры, не кинете ссылку, где данные сбрасываются в денормализованую таблицу во внешней БД? Идея понятна вроде. Но хотелось бы посмотреть пример реализации.
А насчет гоняния удаляемой записи из одной таблицы в другую, так думал гонять, чтобы эти записи не обрабатывались при запросах к Таблице Заказы. Можно конечно условие поставить на выборку, только по идее чем меньше записей обрабатывается, тем быстрее запросы работают.
А то что старые записи в архив скидывать надо, так это понятно и периодически их и так сбрасывал в архивную базу, а основную чистил от лишнего. Пока что все вручную, хотя надо бы автоматизировать. | |
|
| |
|
|
|
| реализация запросом на добавление записей в таблицу и запросом на удаление из прежнего места и всё это по условию(одинаковому) | |
|
| |
|
|
|
| Подскажите плиз как обратиться к записи в Таблице Заказы из сложной формы, в которой еще 2 уровня вложения форм. Так в последней по степени вложения форме выводятся заказы (не все, а по определенному условию на выборку) и хотел повесить на одной из предыдущих по вложению форм кнопку Удалить для удаления заказа из Таблицы Заказы. В Форме выведены не все поля из соответствующей Таблицы, например нет поля Код, а я хотел обратиться к соответствующей записи в Таблице именно по полю Код (счетчик, ключевое поле), отсутствующему пока что в Форме. После обращения к этой записи сначала копировал бы соответствующие поля этой записи в Таблицу УдаленныеЗаказы, дописывал бы туда в три дополнительных поля информацию о том кто удалил, в какое время и по какой причине. А после этого удалял бы эту запись из Таблицы Заказы. Хотелось бы именно так реализовать, а не добавлением полей об удалении в Таблицу Заказы, хотя второй вариант и проще и понятней. | |
|
| |
|
|
|
| Напишите где нибудь в модуле функцию=
удаление_записей(код)
Где удобно сделаете кнопку....
По нажатию кнопки запустите функцию....
В функцию передадите код удаляемого,
Переложите куда надо записи,
Удалите откуда нужно записи. | |
|
| |
|
|
|
| Вот меня и интересует как к этому коду обратиться, если на форме его нет, а в таблице есть. Нужно его на форму вывести или как-то по-другому можно? Удалять собирался запись, активную под курсором. | |
|
| |
|
|
|
| В общем, начал это самое удаление - перемещение записей делать и столкнулся с возможностью сделать это двумя способами. Один - это присваивать значения для новой записи в Таблице УдаленныеЗаказы из контролов в форме, второй - открывать по коду запись в Таблице Заказы и копировать соответствующие значения оттуда. Потом уже соответствующая запись будет удалена. Подскажите какой вариант правильнее.
И второй вопрос - это если по второму варианту делать, то можно ли одновременно открывать два рекордсета или должен быть только один открыт. То есть открыть соотвествующий рекодсет в Таблице Заказы, открыть рекодсет (новый) в Таблице УдаленныеЗаказы и присваивать соответствующие значения. Потом закрыть оба рекодсета. Или же следует например открыть рекодсет в Таблице Заказы, присвоить нужные зачения переменным, удалить запись и закрыть этот рекодсет, открыть рекодсет в Таблице УдаленныеЗаказы, присвоить нужным полям значения из переменных, закрыть рекодсет. | |
|
| |