|
|
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
В программе выполняются простые действия: - открытие выбранной накладной - изменение значений в этой накладной - запись сделанных изменений или отмена корректировки В MDB проекте это реализовано у меня так: - вставка записей для выбранной накладной в промежуточную таблицу из основной таблицы - корректировка значений в форме, у которой источником записей является промежуточная таблица. - при нажатии Ок делаем запись значений, а именно удаляются ВСЕ строки выбранной накладной из основной таблицы и делается вставку строк из промежуточной. Вопрос1: Надежен ли такой способ корректировки? Или следует сравнить каждую запись промежуточной и основной таблиц и на этом основании удалять, изменять или добавлять записи в основной таблице? Вопрос2: Не могу понять, как это сделать в ADP проекте. Какой источник записей указывать для формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 14:28 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Грустно!! Товарищи!!!!! Зачем же переписывать Access (да еще и сервер, похоже....) На мой взгляд - это один из самых неудачных подходов к решению проблемы изменения записей..... И сразу у меня возникает вопрос - что двигало разработчиком, что он пришел к такой схеме?!?! Почему нельзя обновлять запись прямо в таблице?!? Если медлено - то проблема не в таблице, а в руках.... Если без эмоций, то 1. - по надежности - ну как сказать... а если вдруг двое захотят корректировать - блокировки тоже ручками выставляешь!?!? 2. - а там оно и не нужно, при нормальном подходе.... - или конечно можно создавать temp таблицы, линковать их и пр..., но!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 16:36 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
вот и я о том же. с ума посходили с этими временными таблицами. любят лишнюю работу делать да на кнопки все вешать. прям руки поотрывал. насмотрелись как в 1С делают и давай лепить "отменить" "записать" "создать" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 16:56 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
повесьте в adp все на триггеры. да спите себе спокойно. кода -минимум. удобства -максимум. чо изобретать себе работу? аксесс все это позволяет делать гораздо проще. вот и пользуйтесь этими возможностями. нет. вот и пишут километры кода вот и пишут. в mdb не было транзакций на уровне таблицы. вот и приходилось все вешать накнопки. в adp от этого можно спокойно избавится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 17:00 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2Vitaly223: Я так делал, способ вполне надежен. Вариантов несколько, например: 1. Тот же самый отключенный рекордсет. 2. Временная таблица на сервере, общая для всех пользователей, с полем, которое позволит отличить записи разных клиентов. 3. Никаких удалений, только добавления. Т.е. создается копия редактируемой записи, старая помечается неиспользуемой. Параллельные изменения в процессе редактирования ловятся по timestamp Реально применял 2-ой способ, тестировал 3-ий. 2Противники кнопки "Отмена": расскажите, чем уж она так вредна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 17:40 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
MixaCh, как в вашем варианте происходит откат изменений? К примеру, есть 2 таблицы Накладные (ID_Nacl(PK)) и "строки_накладных" (ID_String(PK),ID_NACL(FK),ID_Tovar(FK),Kolich). Источник данных табличной формы - запрос на базе второй таблицы. Пользователь изменил количества (KOLICH) в 5 строках, а потом передумал. Как в этом случае отменить изменения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 18:02 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Проблемка есть у аксеса при использовании временных таблиц MSSQL - для того, чтобы форма на основе такой таблицы была редактируемой, необходимо наличие прав dbo для базы tempdb. Это для разминки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 18:06 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
ИгорюМ у меня юзвери вставляют по 700-1000 записей как заказ. потом говрят "ой" надо бы отмениь вставку. опять вставляют, опять говорят "оЙ" мне что же по-товему все записи помечать? у меня ьаза так раздуется что караул закричишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 18:09 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
варану "как в вашем варианте происходит откат изменений?" если запись правится, то она правится. если накладная закрыта то строки_накладных будут только для чтения: меняеешь тип набоа на форме. проблему тоже мне нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 18:16 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2Pavel: "временная" - здесь это значит, что таблица имеет имя #... и находится в tmpdb. Это обычная таблица на сервере, которая используется для временного хранения изменяемых данных. Сорри за нечеткую формулировку. 2Хам трамвайный: что значит "помечать"? Ты про какой вариант, про 3-ий? В любом случае, смысл в том, что каждый решает сам, использовать такой функционал или нет. И если он не подходит тебе, то это не значит, что не подходит всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 18:58 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Хам трамвайный Может мы о разных вещах говорим? Я про MDB и табличную форму с контролами, привязанными к источнику данных . Предположим, в форме идут строки: Товар 1 10 шт Товар 2 20 шт Товар 3 15 шт Пользователь корректирует количества. Как только пользователь перейдет на другую запись, изменения тут же сохранятся в источнике данных. Например, пользователь исправил 20 на 100 и 15 на 300 , а потом решил оставить все, как было. Но изменения уже внесены в БД, как он узнает, что раньше-то было, он все уже переколбасил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:05 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
если он изменяет чтобы исправить , то если строка правильная - значит он её правил, если строка не правильная значит не исправил. IMHO Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:29 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
4D_Monster, это, конечно, глубокая философская мысль, но ведь речь идет не о том, как исправить единичную запись, а о том, как, исправив Группу записей, затем эти изменения отменить, т.е. вернуть в состояние, которое было до внесения изменений. Мне лично не понятно, как можно с помощью формы, напрямую привязанной к данным, реализовать это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 20:37 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
то есть... 1. создана накладная 2. в ней ошибка в позициях 5 - 10 количество товара меньше чем надо клиенту 3. манагер изменяет её в соответствии с необходимостью 4. если в соответствующей позиции теперь стои правильная цифра - ок, иначе исправляем строчку. теперь или объясни зачем отменять эти изменения , или приведи другой пример IMHO Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 20:45 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
4d_monster Я корректирую накладную задним числом, открываю, начинаю исправлять, почти все исправил, и тут замечаю, что исправил не ту накладую, надо все вернуть назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 20:57 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Я корректирую накладную задним числом, открываю, начинаю исправлять, почти все исправил, и тут замечаю, что исправил не ту накладую, надо все вернуть назад Уволить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 06:29 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Из моей практики: использование временных таблиц восходит к временам Dos'овских клипперов парадохксов и иже с ними, когда сбой (пропадание питания, зависание и т.д) напрочь рушило редактируемую таблицу. Использование временоой таблицы позволяло частично обойти эту проблему. Со временем некоторые начали находить в этом преимущества, а точнее вколотили себе в голову штамп, что так и нужно делать всегда. По варианту решения без использования временной таблицы - мы же с СУБД работаем, а стало быть обязаны дружить с математикой, следовательно мыслить логически гибко. Кто мешает реализовать undo, причем с неограгиченной вложенностью? К примеру при редактировании записи на самом деле не редактировать текущую, а создавать новую и присваивать ей атрибут актуальности, фиксируя дату\время корректировки и ссылку на исходную запись. Теперь undo будет сводится к простой смене признака актуальности у записи. Если кто-то приведет аргумент, что не хочет 1000 раз давить на кнопку undo, то я удивлюсь еще больше и предлоджу прописать довольно простой алгоритм групповой отмены до какого-то chekpoint'а. Кстати, а если работник исправил 10 'не тех' накладных по 1000 позиций в каждой? В предложенном мной варианте откат вполне реализуем, а в варианте с временными (на сакмом деле промежуточными) - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 06:53 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Драсте... Просто обожаю, когда вижу на НЕ софтверных фирмах диктат программистов! "Да мне на$рать, что накладные править надо, и что 700-800 позиций перенабирать заново придется, и что оператор должен трижды перепроверять каждое выполняемое действие, т.к. отсутствует возможность отката или редактирования. Мне вообще на$рать на эффективность работы НЕ софтверной фирмы в целом, лишь бы база не "пухла"..." :) Мой респект программерам, сумевшим поставить себя именно таким образом. ...ну и соболезнования фирмам, нанявшим таких максималистов от IT. //не вытерпел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 09:08 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
нуф-нуфДа мне на$рать ... что оператор должен трижды перепроверять каждое выполняемое действие Достаточно _одного_ раза, ей-богу! Это нам приходится по 10 раз перепроверять, потому что оператору показалось(!), что что-то считается неправильно нуф-нуфотсутствует возможность отката или редактирования Во-первых, "откат" <> "редактирование". Во-вторых, откат вполне возможен и в такой схеме. Вот только что-то никто не просит пока... нуф-нуфМой респект программерам, сумевшим поставить себя именно таким образом Спасибо ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 09:43 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
PavelКто мешает реализовать undo, причем с неограгиченной вложенностью? К примеру при редактировании записи на самом деле не редактировать текущую, а создавать новую и присваивать ей атрибут актуальности, фиксируя дату\время корректировки и ссылку на исходную запись. Теперь undo будет сводится к простой смене признака актуальности у записи. Вчера, 17:40 - способ №3. ;) Ведь вопрос заключался не во временных таблицах, а в реализации отката и использование промежуточной таблицы - это один из способов, причем, на мой взгляд, не самый плохой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 09:51 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2 IgorM Да я ни в коем случае не претендую на авторство... Кстати, Undo <> Cancel> как справедливо заметил AlexJuice. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 10:14 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
>Достаточно _одного_ раза, ей-богу! Одного раза не достаточно, ибо изменить то, что он (оператор) ввел - нет никакой возможности! Ведь база будет пухнуть... >отсутствует возможность отката ИЛИ редактирования ИЛИ подразумевает, что "откат" <> "редактирование". Срочно перепешите ваше "Во-первых". По поводу "Во-вторых" - если вы заметили, то никакой конкретной схемы реализации или не_реализации я не коснулся, поэтому ваше "...и в такой схеме" для меня загадка. Срочно перепишите "Во-вторых" :) >Спасибо ;-) Пожалста /культурный типа :) Просто работал на одной фирме не программером не сумел объяснить программеру, что фирме нужно название товара в нескольких вариантах. Он ни в какую, мол база пухнуть будет, реляционая избыточность и т.п. :) Пришлось от него избавиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 10:26 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
Спасибо за дельные советы. Я попытаюсь прояснить мою проблему. Пользователь открывает накладную. В ней перечисленны все товары, которыми торгует фирма. Напротив некоторых стоят количество и цена продажи. Это сделано ради быстроты и удобства ввода данных. Не добавляется строка с выбранным товаром, а только ставится количество и цена. Фактически в таблице хранятся лишь записи с проставленными значениями. При таком способе мне пришлось прибегнуть к промежуточной (временной) таблице, в которой приведен весь список товаров и указаны значения для выбранной накладной. Как же здесь работать напрямую с таблицей, чтобы за меня выполнял работу Аксесс или Сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 10:32 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
н-дя-я-я-я © Масяня IMHO Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 10:45 |
|
||
|
Корректировка накладной
|
|||
|---|---|---|---|
|
#18+
2Vitaly223 Попробуйте использовать встроенный механизм транзакций Access wrkDefault.begintrans ... If MsgBox("Save all changes?", vbYesNo) = vbYes Then wrkDefault.CommitTrans Else wrkDefault.Rollback End If А вообще для серьезных приложений пора переходить на SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 10:52 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32350067&tid=1677703]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
184ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 574ms |

| 0 / 0 |
