|
|
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2Pavel: >Да я ни в коем случае не претендую на авторство... >Кстати, Undo <> Cancel> как справедливо заметил AlexJuice. Дело не авторстве, я на него тоже совсем не претендую, это общеизвестный способ, а в том, что я писал не о промежуточных таблицах, а о вариантах реализации отмены (корректировки). 2Vitaly223: Не касаясь удобства, правильности и прочих субъективных факторов подобной реализации... Все можно сделать точно так же: например, использовать для хранения временных данных специальную таблицу на сервере (аналогичную по структуре базовой), в которую ввести дополнительное поле идентификации текущего клиента. Т.е. примерный алгоритм: 1. Генерируем уникальное число (способ по большому счету неважен). 2. Копируем данные из редактируемого документа в пром. таблицу + в идентификационное поле записываем число из п.1. 3. Источником данных формы для редактирования служит пром. таблица с фильтром по идентификационному полю равному числу из п.1 4. В случае подверждения редактирования, либо удаляем все исходные записи и копируем новые, либо частично удаляем, частично обновляем. Контроль за параллельным редактированием можно осуществлять по разному, например использовать timestamp. P.S. Меня убеждать в правильности/неправильности данного подхода не нужно, убеждайте автора. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:00 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Vitaly223 А если всех товаров станет 100 000, как тогда будет работать пользователь? Можно прояснить этот момент При таком способе мне пришлось прибегнуть к промежуточной (временной) таблице, в которой приведен весь список товаров и указаны значения для выбранной накладной 2 All К спору по поводу программистов которых нужно уволить Имхо, все нужно оговаривать в ТЗ. Если там сказано, что должна быть возможность отката изменений всего редактируемого документа, тогда это дело программиста реализовать такое и как это будет сделано не имеет значения (для заказчика). Если не указано, а пользователь(заказчик) думает, что это само собой разумеется, то программист имеет полное право сказать "В ТЗ сказано ввод и редактирование документов и нигде не сказано откат изменений документа, поэтому редактируйте без ошибок, либо пишем дополнительное ТЗ и за доп. плату будет реализован механизм отката изменений" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:01 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
223 вставь ты записи из списка товаров в накладную. пусть они проставят количество . сама накладная находится в состоянии "черновик" переводишь накладную в приход/расход и удалишь нулевые записи из накладной -никакой временной таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:02 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Есть в таблице "Продажи" следующие записи: Накладная Товар Кол-во ------------------------- 1 сметана 10 1 сливки 5 1 кефир 4 ------------------------- Пользователь открыватет накладную 1 и видит накладную в таком виде сметана 10 сливки 5 йогурт кефир 4 ряженка Какой ставить источник записей для формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:10 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Incold Сейчас товаров 300. В накладной можно выводить все товары, либо указать по фильтру какую группу товаров выводить, а какие скрыть. Но товар, у которого проставлена цена и количество при любом виде фильтра будет выводится на форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:16 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
223 таблица Продажи пустые значения можешь удалить при проведении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:28 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Хам Все что ты говоришь - оно очень прикольно и даже правильно, но ТОЛЬКО ДЛЯ ADP ! Нету в mdb триггеров. Не-ту. Как только тебе понадобится при редактировании строк выполнять какие-то действия (менять резерв, корректировать складские проводки и мало ли какой еще бред) - то тут придется или транзакции по форме делать (с нелюбимыми тобою рекордсетами), или временные (локальные) таблицы использовать. Иначе будут у тебя данные разъезжаться, и будешь ты горькими слезами плакать. В 97-м альтернативы временным таблицам нет. В 2000-м и выше - Me.Recordset + транзакции = кусок геморроя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:52 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
автор Лох Позорный при редактировании строк выполнять какие-то действия (менять резерв, корректировать складские проводки и мало ли какой еще бред) В форме событие BeforeUpdate, AfterUpdate - некая эмуляция тригерров IMHO Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 12:00 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
для mdb повторяем т,1 стр 469 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 12:02 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 4dмонстер Некая эмуляция говоришь? Тогда у меня в системе будет некая эмуляция согласованности данных. Примеры привести как данные могут разъехаться при многопользовательской работе? В сад такую некую эмуляцию. 2 Хам Хам, ты хоть скажи что там, на 469 странице? А то я как раз первый том отдал почитать :)) (а некоторые его и не имеют) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 12:44 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
там так красиво написано, что я цитировать боюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:18 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Можно попробовать такую архитектуру Есть таблицы Накладных и строк накладных. И отдельно - таблица проводок. (А ля 1С) Каждая накладная может быть проведенной - иметь проводки, и непроведенной. Этим достигается: Скорость расчета остатков увеличивается, т.к. в таблице проводок не хранятся непроведенные накладные. Остатки могут двигать накладные разных видов с разными реквизитами. При редактировании проведенной накладной всегда можно откатиться, взяв информацию из проводок о последнем состоянии. При редактировании непроведенной накладной откатиться нельзя, но вы говорите, что меняете накладные задним числом, то есть они проведенные. Минусы - нужно принудительно либо перепроводить либо откатывать проведенную накладную, если в ней что-то меняется задним числом; увеличивается количество таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:24 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Хам Ты не цитируй, ты хотябы название раздела/главы/параграфа/что-там еще есть скажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:30 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
> для mdb > повторяем > т,1 стр 469 > там так красиво > написано, что я цитировать > боюсь Заголовок - "Подчиненные формы и транзакции". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:32 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Tsaryov S А ты не боишься, что система обделается, когда один юзер будет редактировать состав (еще не проведенной накладной), а другой в этот момент ее проведет? Это так, навскидку. Мест где система обделаться может слишком много чтобы их все предусматривать. Нельзя в mdb данные напрямую в основном хранилище редактировать. Низ-зя. Только в каком-либо буфере - или во временных таблицах, или в транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:35 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Гео и Хам Ну я же говорил. В 2000-м и выше - транзакции и пляски с рекордсетами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:36 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Лох ПозорныйНельзя в mdb данные напрямую в основном хранилище редактировать. Низ-зя. Можно. Всё зависит от реализуемой задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:53 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 IgorM Разумеется зависит от задачи. Я рассуждал с позиции учета движения товара. Что то не припомню, чтоб такие задачи не требовали проверок, триггеров, транзакций и прочей радости. Напрямую редактируя данные в основном хранилище - мы, к сожалению, от этих радостей (поневоле) избавлены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:59 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2Лох Согласен, без триггеров и блокировок на уровне сервера написание многопользовательской, и притом надежно работающей базы сильно затруднено. Кроме озвученных вопросов открытия одной накладной одновременно несколькими юзерами встает вопрос, а что, если кто-то захочет данные править обработкой, не из формы (типа массового перепроведения), Или флаг проведения снялся, а проводки не удалились, и т.д. Везде свои прелести. 2All К сожалению, не знаком с книгой Гетца, что там за триггеры в mdb? По-моему, установить SQL-сервер, перевести потихньку туда базу имеет больше плюсов, тем более он на лотках продается (хотя кому-то это минус) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 14:14 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 Tsaryov S К сожалению, не знаком с книгой Гетца Все дружно показали на тебя пальцем и сказали "Фуууу" что там за триггеры в mdb? Нету там триггеров в mdb В старших версиях аксеса можно формочку повесить на открытый тобою рекордсет (причем открытый в твоем, полностью подконтрольном тебе сеансе), а это значит что можно завернуть все в транзакцию и использовать события BeforeUpdate/AfterUpdate как "эмуляцию триггеров". Хоть и не триггеры, но если уж в многопользовательской системе что-то одно отвалится - то все сразу за собой потянет. Хоть данные не разъедутся. Уже легче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 14:19 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2Лох Позорный: Даже с позиций учета движения товара. Допустим, я делал учетную базу для склада, три оператора, текущие остатки не хранятся, все расчеты идут по документам (проводкам), отката нет. Никаких промежуточных таблиц. Блокировки осуществляет Access (Jet). Работает и сейчас, периодически сливая старые данные в архив. "Радости", конечно, это хорошо и правильно, но не все же системы рассчитаны на десятки пользователей, работающих 24х7. Так что не стоит столь категорично их отбрасывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 14:35 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
...текущие остатки не хранятся, все расчеты идут по документам (проводкам), отката нет... ... выделенных состояний документов нет, переходов между состояниями нет, ограничений на возможность редактирования нет (например, нельзя редактировать проведенный документ), сохраненных промежуточных остатков (для ускорения расчета по проводками) нет, порождений одних документов по другим нет, кучи всего нет.... Не вопрос. Если такая система востребованна - то в ней так и надо, не мудрствуя лукаво править все там, где оно лежит. Ибо представляет оно из себя две таблицы - заголовок и состав (ну и всякие справочники и т.п.). Если есть что-то сложнее двух таблиц (что-нить из первого абзаца например) - то, честно говоря, я не представляю, как это сделать надежно и - напрямую редактируя. Возражения типа "не все же системы рассчитаны на десятки пользователей" не принимаются. Могут быть всего два варианта - либо ровно один пользователь, либо пользователей больше одного. Так что не стоит столь категорично их отбрасывать Ладно, ладно... Чегой-то я разгундосился. Сам однопользовательские вспомогательные базки писал (для контроля аксапты). Бывает такое нужно. Но редко в моей практике, вот я по привычке такое и отбрасываю из рассмотрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 14:58 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32350773&tid=1677703]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 351ms |

| 0 / 0 |
