Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите как лучше сделать
 
 автор: dimonicss   (03.02.2008 в 01:03)   личное сообщение
 
 

Подскажите плиз каким образом лучше сделать следующее. Есть таблица с заказами и есть открытая форма, в которой встроенная форма табличного вида, в которой отображено часть полей из Таблицы Заказы. Хочу в основной форме повесить кнопку "Удаление заказа", при нажатии на которой активная запись из встроенной формы (на которой до этого курсор мигал) перейдет из Таблицы "Заказы" в Таблицу "Удаленные заказы", т.е. из первой Таблицы удалится, а во второй появится. Причем перед удалением чтобы появилось окошко для ввода текста, в которой указать причину удаления. Далее этот введенный текст должен добавиться к тексту в поле "Примечание", либо не добавиться, а записаться в отдельное поле Таблицы "Удаленные заказы", которое тогда дополнительно предусмотрю. Вообще думал, что поля Таблиц "Заказы" и "Удаленные заказы" будут совпадать и добавление причины удаления все-таки будет дописываться к тексту в поле Примечание.

  Ответить  
 
 автор: час   (03.02.2008 в 09:17)   личное сообщение
 
 

Всё правильно так и делай..

  Ответить  
 
 автор: akkorn   (03.02.2008 в 19:41)   личное сообщение
 
 

таки так и делай. все верно.

  Ответить  
 
 автор: Explorer   (04.02.2008 в 03:03)   личное сообщение
 
 

неверно...

нет смысла гонять запись из одной таблицы в другую

вместо этого необходимо в таблице Заказы сделать дополнительное логическое поле "заказ удален"

в принципе может быть лучше сделать поле "статус заказа"

удален
отложен
выполнен
согласуется

и проч.

  Ответить  
 
 автор: час   (04.02.2008 в 08:06)   личное сообщение
 
 

извиняюся, а если эти записи уже не нужны?
Только для истории....
То может их лучше в другую таблицу перебросить - в архив тасазать...

  Ответить  
 
 автор: Explorer   (04.02.2008 в 11:03)   личное сообщение
 
 

такой подход тоже есть - например по дате документа или при обслуживании БД (сжатие-отимизация)

даные сбрасываются в денормализованую таблицу во внешней БД,

но

1 не на каждом удалении записи а при оптимизации.
2 не в симметричную таблицу а в денормализованную

  Ответить  
 
 автор: час   (04.02.2008 в 14:48)   личное сообщение
 
 

Спасибо ПОНЯТНО.
А в каком смысле "денормализованную" или (как понять денормализованную)

  Ответить  
 
 автор: Explorer   (04.02.2008 в 15:34)   личное сообщение
 
 

когда данные связанных таблиц и вычисляемые в запросах данные хранятся в таблице бэкапа в явном виде.

например если вы удалили запись

OrderID
CustomerID
EmployeeID
ProductID
PicePerUnit
Quantity

и сохранили в таблицу бэкапа в виде

1006
1234
7685
45008
300-00 рублей
4 штуки

то проку от такого бэкапа будет мало

Нужно

Срочный заказ от 12-07-1977
ЗАО Рога и Копыта (Москва Николоямская 56)
Парфенов Николай
Свеча стеариновая ГОСТ 34-000-9876-1950
300-00 рублей
4 штуки

  Ответить  
 
 автор: час   (04.02.2008 в 20:26)   личное сообщение
 
 

Ещё раз СПАСИБО!
(теперь точно всё понятно...)


dimonicss, читаешь?Вникаешь?

  Ответить  
 
 автор: ГлазастыйМышь   (04.02.2008 в 08:17)   личное сообщение
 
 

и еще на это поле "статус заказа" выставить индекс с повторением
Хорошо бы еще поля дата изменения и автор (заполнять программно при изменении статуса)

  Ответить  
 
 автор: dimonicss   (15.02.2008 в 23:12)   личное сообщение
 
 

Пытаюсь впитать мудрость описанную выше. Только если есть примеры, не кинете ссылку, где данные сбрасываются в денормализованую таблицу во внешней БД? Идея понятна вроде. Но хотелось бы посмотреть пример реализации.
А насчет гоняния удаляемой записи из одной таблицы в другую, так думал гонять, чтобы эти записи не обрабатывались при запросах к Таблице Заказы. Можно конечно условие поставить на выборку, только по идее чем меньше записей обрабатывается, тем быстрее запросы работают.
А то что старые записи в архив скидывать надо, так это понятно и периодически их и так сбрасывал в архивную базу, а основную чистил от лишнего. Пока что все вручную, хотя надо бы автоматизировать.

  Ответить  
 
 автор: час   (15.02.2008 в 23:36)   личное сообщение
 
 

реализация запросом на добавление записей в таблицу и запросом на удаление из прежнего места и всё это по условию(одинаковому)

  Ответить  
 
 автор: dimonicss   (27.02.2008 в 00:13)   личное сообщение
 
 

Подскажите плиз как обратиться к записи в Таблице Заказы из сложной формы, в которой еще 2 уровня вложения форм. Так в последней по степени вложения форме выводятся заказы (не все, а по определенному условию на выборку) и хотел повесить на одной из предыдущих по вложению форм кнопку Удалить для удаления заказа из Таблицы Заказы. В Форме выведены не все поля из соответствующей Таблицы, например нет поля Код, а я хотел обратиться к соответствующей записи в Таблице именно по полю Код (счетчик, ключевое поле), отсутствующему пока что в Форме. После обращения к этой записи сначала копировал бы соответствующие поля этой записи в Таблицу УдаленныеЗаказы, дописывал бы туда в три дополнительных поля информацию о том кто удалил, в какое время и по какой причине. А после этого удалял бы эту запись из Таблицы Заказы. Хотелось бы именно так реализовать, а не добавлением полей об удалении в Таблицу Заказы, хотя второй вариант и проще и понятней.

  Ответить  
 
 автор: час   (27.02.2008 в 07:53)   личное сообщение
 
 

Напишите где нибудь в модуле функцию=
удаление_записей(код)

Где удобно сделаете кнопку....
По нажатию кнопки запустите функцию....
В функцию передадите код удаляемого,
Переложите куда надо записи,
Удалите откуда нужно записи.

  Ответить  
 
 автор: dimonicss   (27.02.2008 в 19:06)   личное сообщение
 
 

Вот меня и интересует как к этому коду обратиться, если на форме его нет, а в таблице есть. Нужно его на форму вывести или как-то по-другому можно? Удалять собирался запись, активную под курсором.

  Ответить  
 
 автор: dimonicss   (30.03.2008 в 15:23)   личное сообщение
 
 

В общем, начал это самое удаление - перемещение записей делать и столкнулся с возможностью сделать это двумя способами. Один - это присваивать значения для новой записи в Таблице УдаленныеЗаказы из контролов в форме, второй - открывать по коду запись в Таблице Заказы и копировать соответствующие значения оттуда. Потом уже соответствующая запись будет удалена. Подскажите какой вариант правильнее.
И второй вопрос - это если по второму варианту делать, то можно ли одновременно открывать два рекордсета или должен быть только один открыт. То есть открыть соотвествующий рекодсет в Таблице Заказы, открыть рекодсет (новый) в Таблице УдаленныеЗаказы и присваивать соответствующие значения. Потом закрыть оба рекодсета. Или же следует например открыть рекодсет в Таблице Заказы, присвоить нужные зачения переменным, удалить запись и закрыть этот рекодсет, открыть рекодсет в Таблице УдаленныеЗаказы, присвоить нужным полям значения из переменных, закрыть рекодсет.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList