powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Корректировка накладной
23 сообщений из 48, страница 2 из 2
Корректировка накладной
    #32350276
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Pavel:
>Да я ни в коем случае не претендую на авторство...
>Кстати, Undo <> Cancel> как справедливо заметил AlexJuice.

Дело не авторстве, я на него тоже совсем не претендую, это общеизвестный способ, а в том, что я писал не о промежуточных таблицах, а о вариантах реализации отмены (корректировки).

2Vitaly223:
Не касаясь удобства, правильности и прочих субъективных факторов подобной реализации... Все можно сделать точно так же: например, использовать для хранения временных данных специальную таблицу на сервере (аналогичную по структуре базовой), в которую ввести дополнительное поле идентификации текущего клиента. Т.е. примерный алгоритм:

1. Генерируем уникальное число (способ по большому счету неважен).
2. Копируем данные из редактируемого документа в пром. таблицу + в идентификационное поле записываем число из п.1.
3. Источником данных формы для редактирования служит пром. таблица с фильтром по идентификационному полю равному числу из п.1
4. В случае подверждения редактирования, либо удаляем все исходные записи и копируем новые, либо частично удаляем, частично обновляем.

Контроль за параллельным редактированием можно осуществлять по разному, например использовать timestamp.

P.S. Меня убеждать в правильности/неправильности данного подхода не нужно, убеждайте автора. :)
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350278
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Vitaly223
А если всех товаров станет 100 000, как тогда будет работать пользователь?

Можно прояснить этот момент
При таком способе мне пришлось прибегнуть к промежуточной (временной) таблице, в которой приведен весь список товаров и указаны значения для выбранной накладной

2 All
К спору по поводу программистов которых нужно уволить
Имхо, все нужно оговаривать в ТЗ.
Если там сказано, что должна быть возможность отката изменений всего редактируемого документа, тогда это дело программиста реализовать такое и как это будет сделано не имеет значения (для заказчика).
Если не указано, а пользователь(заказчик) думает, что это само собой разумеется, то программист имеет полное право сказать
"В ТЗ сказано ввод и редактирование документов и нигде не сказано откат изменений документа, поэтому редактируйте без ошибок, либо пишем дополнительное ТЗ и за доп. плату будет реализован механизм отката изменений"
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350281
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
223
вставь ты записи
из списка товаров
в накладную.
пусть они проставят количество
. сама
накладная находится
в состоянии "черновик"
переводишь накладную
в приход/расход
и удалишь
нулевые записи из
накладной

-никакой
временной таблицы
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350306
Vitaly223
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть в таблице "Продажи" следующие записи:
Накладная Товар Кол-во
-------------------------
1 сметана 10
1 сливки 5
1 кефир 4
-------------------------
Пользователь открыватет накладную 1 и видит накладную в таком виде
сметана 10
сливки 5
йогурт
кефир 4
ряженка

Какой ставить источник записей для формы?
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350317
Vitaly223
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Incold
Сейчас товаров 300. В накладной можно выводить все товары, либо указать по фильтру какую группу товаров выводить, а какие скрыть. Но товар, у которого проставлена цена и количество при любом виде фильтра будет выводится на форме.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350349
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
223
таблица Продажи
пустые значения
можешь удалить
при проведении
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350416
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хам
Все что ты говоришь - оно очень прикольно и даже правильно, но ТОЛЬКО ДЛЯ ADP !
Нету в mdb триггеров. Не-ту.
Как только тебе понадобится при редактировании строк выполнять какие-то действия (менять резерв, корректировать складские проводки и мало ли какой еще бред) - то тут придется или транзакции по форме делать (с нелюбимыми тобою рекордсетами), или временные (локальные) таблицы использовать. Иначе будут у тебя данные разъезжаться, и будешь ты горькими слезами плакать.
В 97-м альтернативы временным таблицам нет. В 2000-м и выше - Me.Recordset + транзакции = кусок геморроя.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350434
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Лох Позорный при редактировании строк выполнять какие-то действия (менять резерв, корректировать складские проводки и мало ли какой еще бред)

В форме событие BeforeUpdate, AfterUpdate - некая эмуляция тригерров

IMHO Mon$te®
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350439
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для mdb
повторяем
т,1 стр 469
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350521
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 4dмонстер
Некая эмуляция говоришь? Тогда у меня в системе будет некая эмуляция согласованности данных. Примеры привести как данные могут разъехаться при многопользовательской работе?
В сад такую некую эмуляцию.

2 Хам
Хам, ты хоть скажи что там, на 469 странице? А то я как раз первый том отдал почитать :)) (а некоторые его и не имеют)
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350588
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там так красиво
написано, что я цитировать
боюсь
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350602
Tsaryov S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать такую архитектуру
Есть таблицы Накладных и строк накладных.
И отдельно - таблица проводок. (А ля 1С)
Каждая накладная может быть проведенной - иметь проводки, и непроведенной. Этим достигается:
Скорость расчета остатков увеличивается, т.к. в таблице проводок не хранятся непроведенные накладные.
Остатки могут двигать накладные разных видов с разными реквизитами.
При редактировании проведенной накладной всегда можно откатиться, взяв информацию из проводок о последнем состоянии.
При редактировании непроведенной накладной откатиться нельзя, но вы говорите, что меняете накладные задним числом, то есть они проведенные.
Минусы - нужно принудительно либо перепроводить либо откатывать проведенную накладную, если в ней что-то меняется задним числом; увеличивается количество таблиц.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350621
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хам
Ты не цитируй, ты хотябы название раздела/главы/параграфа/что-там еще есть скажи
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350629
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> для mdb
> повторяем
> т,1 стр 469

> там так красиво
> написано, что я цитировать
> боюсь



Заголовок - "Подчиненные формы и транзакции".
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350631
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Tsaryov S
А ты не боишься, что система обделается, когда один юзер будет редактировать состав (еще не проведенной накладной), а другой в этот момент ее проведет? Это так, навскидку. Мест где система обделаться может слишком много чтобы их все предусматривать.
Нельзя в mdb данные напрямую в основном хранилище редактировать. Низ-зя. Только в каком-либо буфере - или во временных таблицах, или в транзакции.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350634
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Гео и Хам
Ну я же говорил. В 2000-м и выше - транзакции и пляски с рекордсетами.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350676
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох ПозорныйНельзя в mdb данные напрямую в основном хранилище редактировать. Низ-зя.

Можно. Всё зависит от реализуемой задачи.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350697
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 IgorM
Разумеется зависит от задачи.
Я рассуждал с позиции учета движения товара. Что то не припомню, чтоб такие задачи не требовали проверок, триггеров, транзакций и прочей радости. Напрямую редактируя данные в основном хранилище - мы, к сожалению, от этих радостей (поневоле) избавлены.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350724
Tsaryov S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лох
Согласен, без триггеров и блокировок на уровне сервера написание многопользовательской, и притом надежно работающей базы сильно затруднено.
Кроме озвученных вопросов открытия одной накладной одновременно несколькими юзерами встает вопрос, а что, если кто-то захочет данные править обработкой, не из формы (типа массового перепроведения),
Или флаг проведения снялся, а проводки не удалились, и т.д.
Везде свои прелести.
2All
К сожалению, не знаком с книгой Гетца, что там за триггеры в mdb? По-моему, установить SQL-сервер, перевести потихньку туда базу имеет больше плюсов, тем более он на лотках продается (хотя кому-то это минус)
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350746
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Tsaryov S
К сожалению, не знаком с книгой Гетца
Все дружно показали на тебя пальцем и сказали "Фуууу"

что там за триггеры в mdb?
Нету там триггеров в mdb
В старших версиях аксеса можно формочку повесить на открытый тобою рекордсет (причем открытый в твоем, полностью подконтрольном тебе сеансе), а это значит что можно завернуть все в транзакцию и использовать события BeforeUpdate/AfterUpdate как "эмуляцию триггеров". Хоть и не триггеры, но если уж в многопользовательской системе что-то одно отвалится - то все сразу за собой потянет. Хоть данные не разъедутся. Уже легче.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350773
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лох Позорный:
Даже с позиций учета движения товара. Допустим, я делал учетную базу для склада, три оператора, текущие остатки не хранятся, все расчеты идут по документам (проводкам), отката нет. Никаких промежуточных таблиц. Блокировки осуществляет Access (Jet). Работает и сейчас, периодически сливая старые данные в архив.
"Радости", конечно, это хорошо и правильно, но не все же системы рассчитаны на десятки пользователей, работающих 24х7. Так что не стоит столь категорично их отбрасывать.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350810
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...текущие остатки не хранятся, все расчеты идут по документам (проводкам), отката нет...
... выделенных состояний документов нет, переходов между состояниями нет, ограничений на возможность редактирования нет (например, нельзя редактировать проведенный документ), сохраненных промежуточных остатков (для ускорения расчета по проводками) нет, порождений одних документов по другим нет, кучи всего нет....

Не вопрос. Если такая система востребованна - то в ней так и надо, не мудрствуя лукаво править все там, где оно лежит. Ибо представляет оно из себя две таблицы - заголовок и состав (ну и всякие справочники и т.п.).

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

Возражения типа "не все же системы рассчитаны на десятки пользователей" не принимаются. Могут быть всего два варианта - либо ровно один пользователь, либо пользователей больше одного.

Так что не стоит столь категорично их отбрасывать
Ладно, ладно... Чегой-то я разгундосился. Сам однопользовательские вспомогательные базки писал (для контроля аксапты). Бывает такое нужно. Но редко в моей практике, вот я по привычке такое и отбрасываю из рассмотрения.
...
Рейтинг: 0 / 0
Корректировка накладной
    #32350946
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох Позорный:

Есть почти все, что ты перечислил, исключая, как я уже писал, текущие остатки.

>Ладно, ладно... Чегой-то я разгундосился.

Тогда на этом и закончим...
...
Рейтинг: 0 / 0
23 сообщений из 48, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Корректировка накладной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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