|
|
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Марина, еще раз извиняюсь, что пользуюсь не твоими названиями, и не проверяю, то, что пишу, но в твоем случае, наверное, надо идти примерно по такому пути: Select Таблица.Чек, Sum(Таблица1.Сумма) As ПервыйСтолбец, Запрос1.СуммаОтката From Таблица left join [select Таблица.Чек, Sum(Таблица.Сумма) AS СуммаОтката, Таблица.ТипОперации from Таблица group by Таблица.Чек, Таблица1.ТипОперации Where Таблица.ТипОперации="1"]. Аз Запрос1 On Таблица.Чек = Запрос1.Чек Group By Таблица.Чек, Таблица1.ТипОперации, Запрос1.СуммаОтката Having Таблица1.ТипОперации="4"; В итоге должна получиться табличка, где Первый столбик, Чек = № чека Второй, сумма = сумма оплаты Третий = сумма отката. Это для Акцесса 97. Если у тебя 2000 и дальше - [...]. замени на (...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 02:28 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
>116 kb посмотри пожалуйста Не могу... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 02:31 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
2 Geo спасибо... я попробую... сейчас уже все равно ничччего не соображаю :) тот-то вариант сработал... надо будет его протестировать на реальной кассе, сработает - ну и отлично а нет, буду дальше думать :) А насчет книжек, которые листать на досуге.... листаю :) Только может все больше не те? Вы мне посоветуйте, какая действительно толковая на Ваш взгляд? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 02:50 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
2Марина 1) не "ваш" а "твой" 2) утро вечера мудрёней 3) перед тем, как листать книжки завтра посмотри и пойми, что я тебе хотел сказать на примере таблички. А из книжек рекомендую Ф1 и Гетца (поиск по форуму) 4) завтра, крайний срок в понедельник, тебе здесь напишут, все, что надо... :) Спокночи.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 02:57 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Записей так в 500-800. Конечно много люди глупостей делают, но ведь должна быть хоть какая то логика у тех кто таблицу лобал. Думаю что идея GEO о сборном ключе вполне работоспособная. Тоесть ключ можно собрать из номера чека, суммы и даты (возможно слегка обработанной). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 08:28 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Вот новая проблема. Если просто искать подходящие записи по сборному ключу, то может оказаться записей с 1 больше, чем с записей с 4. См. картинку, там для первых 2 четверочных записей есть 4 единичечных. Это значит, что перед стиранием надо убедиться, что стираем ровно столько записей с 1, сколько с 4. (О том, что стираем именно те, говорить не приходится, но это и не нужно, потому что они совершенно одинаковые.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 13:52 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
>Тоесть ключ можно собрать из номера чека, суммы и даты (возможно слегка обработанной). Не получится. Все равно придется, когда появиться еще одна касса (кассовый аппарат), вводить поле его номера, или плодить таблицы - по одной на каждую кассу. 2Владимир Саныч >Если просто искать подходящие записи по сборному ключу, то может оказаться записей с 1 больше, чем с записей с 4 И наоборот, записей с 4 м.б. больше, чем с 1. (1 чек может иметь до 5 откатов). Соответственно, мы совсем не обязательно должны стирать столько же "1", сколько "4". Хотя не очень понятно, что такое "один из откатов". Это возврат части суммы по чеку? 2Марина Еще вопрос по логике программы: а так ли необходимо вообще что-то стирать из таблицы? И зачем? Не лучше ли, если можно видеть всю историю внесений денег в кассу и возвратов? Получить текущий остаток можно и без удалений записей. Слегка переделав запрос от 02:28... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 14:47 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
> И наоборот, записей с 4 м.б. больше, чем с 1. Ты уверен??? Если это так, то вообще изначальная постановка задачи неверна! Потому что это значит, что не перед каждой 4 есть 1, которую надо стереть. И тогда те программы, которые были предложены, стирают не 1 перед 4, а нужные данные. Так что - уверен ли ты??? А вообще, я еще раз предлагаю: помучиться немножко вручную, а потом добавить поле счетчика и основывать программу на нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:04 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
>Так что - уверен ли ты??? См. сообщение Марины от сегодня, 02:01. Описание поля CHECK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:09 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Еще раз пишу пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Кстати, поле SUM неплохо бы и переименовать. Или же с ним надо быть очень аккуратным в Access'e. В этой таблице деньги по чеку № 1 полностью возвращаются за три раза. Та запрос/программа, которую сейчас пытается найти Марина, похерит после работы, кроме чеков № 1, чеки №№ 2, 3 и 4. И предлагаю вариант решения: Код: plaintext 1. 2. 3. 4. Т.е. чтобы по номеру чека в результирующем запросе показывалась сумма прихода и возврата. В принципе, тогда можно обойтись и без счетчика, но идентификатор № кассы все равно понадобится, если касс будет >1. С другой стороны, в ее таблице куча избыточных полей, можно занять и одно из них... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:18 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Но там этого не сказано. Там не сказано, что единиц может быть меньше, чем четверок. Может быть, ты в отличие от меня знаком с бухгалтерией и понимаешь, что такое откат и какой код ему соответствует, но даже если считать, что откат - это 1, то все равно их не меньше, а больше. Или откат - это 4??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:19 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
> Та запрос/программа, которую сейчас пытается найти Марина, похерит после работы, кроме чеков № 1, чеки №№ 2, 3 и 4. Ну, поверим Марине, что такая комбинация данных невозможна. И что условие "запись создана непосредственно перед этой" действительно дает нужную запись, соответствующую тому, что надо. И тогда проблема только в том, как убедиться, что запись создана непосредственно перед этой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:22 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
>понимаешь, что такое откат и какой код ему соответствует :) Нет, насколько я понимаю, соответствующие коды изобретены Мариной или ее предшественниками. Сообщение Марины от сегодня, 00:47 1 - это продажа а 4 - это откат этой самой продажи >И что условие "запись создана непосредственно перед этой" действительно дает нужную запись, соответствующую тому, что надо Такого в принципе быть не может. 1. Я пришел в магазин, купил бутылку водки, а через 2 часа, за которые были пробиты куча чеков, пришел ее возвращать - возврат не обязательно следует за внесением денег в кассу. 2. Кроме водки, я покупал и закуску. А вернул только водку - сумма возврата не обязательно равна сумме, внесенной в кассу, т.е. простым удаление пар (и даже нескольких) записей с одним номером чека не спасет мать русской демократии :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:31 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
> Сообщение Марины от сегодня, 00:47 > 1 - это продажа > а > 4 - это откат этой самой продажи Тьфу. И правда, откат - это 4. Но я все равно надеюсь, что перед каждым 4 есть свое 1. > 1. Я пришел в магазин, купил бутылку водки, а через 2 часа, за которые были пробиты куча чеков, пришел ее возвращать - возврат не обязательно следует за внесением денег в кассу. > 2. Кроме водки, я покупал и закуску. А вернул только водку - сумма возврата не обязательно равна сумме, внесенной в кассу, т.е. простым удаление пар (и даже нескольких) записей с одним номером чека не спасет мать русской демократии :) ИМХО, это не тот случай. Если чек был пробит и оплачен тобой два часа назад, то тебе возвращают деньги совсем другой операцией, не по этому номеру чека и, возможно, не в этой кассе, а в главной. Мне кажется, что ситуация, которую предъявляет нам Марина, - это только ошибки и исправления кассира в процессе работы над одним чеком. Ошибся и тут же сделал Undo, вот эта пара операций и дает нам пару записей с 1 и с 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:39 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Короче, постановка (такая, которая действительно решаема) должна выглядеть так: для каждой записи с 4 надо найти одну запись с 1, в которой те же номер чека и сумма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:44 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
> Ошибся и тут же сделал Undo, Все равно это не означает, что кассир заметил ошибку сразу же. Или сразу же решил ее откатить. Кроме того, зачем же имеется возможность делать до 5 откатов по одному чеку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:45 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
> Все равно это не означает, что кассир заметил ошибку сразу же. Или сразу же решил ее откатить. Но она все равно в пределах того же чека. Моя постановка в предыдущем посте эту проблему решает. Тем более что порядок записей в этой таблице не фиксируется, счетчика нет, а значит понятие "сразу же" мы все равно проверить не можем. > Кроме того, зачем же имеется возможность делать до 5 откатов по одному чеку? Видимо, это 5 откатов на 5 ошибок. Конец дня и усталый кассир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:47 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
>для каждой записи с 4 надо найти одну запись с 1 Да нет же. М.б. две "4" для одной "1". > в которой те же номер чека и сумма. И сумма по той же причине может быть не равна. Надо ждать Марину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:49 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
> Да нет же. М.б. две "4" для одной "1". Я пока не понимаю, откуда это следует. В изначальной постановке было сказано, что для каждой 4 есть одна 1. И я вообще не могу представить, как может быть два Undo для одной ошибки. Типа, пробил водку, потом отменил полбутылкки, а потом отменил еще полбутылки? Могу представить наоборот - когда две ошибки отменяются одним Undo, правда и этот случай сам по себе тоже разрушает все, что было предложено. > И сумма по той же причине может быть не равна. Тогда надо писать программу, которая подбирает комбинацию записей на заданную сумму (потому что в пределах чека хотя бы сумма 4 должна равняться сумме стираемых 1). Задачка не из легких... > Надо ждать Марину... Будем ждать. Мой вопрос к Марине: правда ли, что ее устраивает моя постановка от сегодня, 15:44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 15:57 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
Ребята,это все гадания на кофейной гуще.Пока не будет четкой постановки задачи,решить ее невозможно З.Ы существующая таблица-яркий пример того ,как НЕ надо проектировать базы данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 16:02 |
|
||
|
запрос на удаление
|
|||
|---|---|---|---|
|
#18+
В общем, я пока написал то, что работает (проверено!) в предположении, что моя постановка верна. 1. Создаем запрос qry1: Код: plaintext 1. 2. 2. Пишем процедуру: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Если запись с 1 не найдена, то запись с 4 все равно стирается. Если это неправильно, то несложно программу переделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 16:24 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32284065&tid=1679054]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 396ms |

| 0 / 0 |
