powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / запрос на удаление
21 сообщений из 71, страница 3 из 3
запрос на удаление
    #32283972
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марина, еще раз извиняюсь, что пользуюсь не твоими названиями, и не проверяю, то, что пишу, но в твоем случае, наверное, надо идти примерно по такому пути:

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 и дальше - [...]. замени на (...)
...
Рейтинг: 0 / 0
запрос на удаление
    #32283974
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>116 kb посмотри пожалуйста

Не могу... :(
...
Рейтинг: 0 / 0
запрос на удаление
    #32283976
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Geo

спасибо...
я попробую...
сейчас уже все равно ничччего не соображаю :)
тот-то вариант сработал...
надо будет его протестировать на реальной кассе, сработает - ну и отлично
а нет, буду дальше думать :)

А насчет книжек, которые листать на досуге.... листаю :)
Только может все больше не те?
Вы мне посоветуйте, какая действительно толковая на Ваш взгляд? :)
...
Рейтинг: 0 / 0
запрос на удаление
    #32283978
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Марина

1) не "ваш" а "твой"
2) утро вечера мудрёней
3) перед тем, как листать книжки завтра посмотри и пойми, что я тебе хотел сказать на примере таблички. А из книжек рекомендую Ф1 и Гетца (поиск по форуму)
4) завтра, крайний срок в понедельник, тебе здесь напишут, все, что надо... :)

Спокночи..
...
Рейтинг: 0 / 0
запрос на удаление
    #32283990
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записей так в 500-800. Конечно много люди глупостей делают, но ведь должна быть хоть какая то логика у тех кто таблицу лобал. Думаю что идея GEO о сборном ключе вполне работоспособная. Тоесть ключ можно собрать из номера чека, суммы и даты (возможно слегка обработанной).
...
Рейтинг: 0 / 0
запрос на удаление
    #32284028
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот новая проблема. Если просто искать подходящие записи по сборному ключу, то может оказаться записей с 1 больше, чем с записей с 4. См. картинку, там для первых 2 четверочных записей есть 4 единичечных. Это значит, что перед стиранием надо убедиться, что стираем ровно столько записей с 1, сколько с 4. (О том, что стираем именно те, говорить не приходится, но это и не нужно, потому что они совершенно одинаковые.)
...
Рейтинг: 0 / 0
запрос на удаление
    #32284049
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Тоесть ключ можно собрать из номера чека, суммы и даты (возможно слегка обработанной).

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

2Владимир Саныч

>Если просто искать подходящие записи по сборному ключу, то может оказаться записей с 1 больше, чем с записей с 4

И наоборот, записей с 4 м.б. больше, чем с 1. (1 чек может иметь до 5 откатов). Соответственно, мы совсем не обязательно должны стирать столько же "1", сколько "4". Хотя не очень понятно, что такое "один из откатов". Это возврат части суммы по чеку?

2Марина
Еще вопрос по логике программы: а так ли необходимо вообще что-то стирать из таблицы? И зачем? Не лучше ли, если можно видеть всю историю внесений денег в кассу и возвратов? Получить текущий остаток можно и без удалений записей. Слегка переделав запрос от 02:28...
...
Рейтинг: 0 / 0
запрос на удаление
    #32284054
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> И наоборот, записей с 4 м.б. больше, чем с 1.

Ты уверен??? Если это так, то вообще изначальная постановка задачи неверна! Потому что это значит, что не перед каждой 4 есть 1, которую надо стереть. И тогда те программы, которые были предложены, стирают не 1 перед 4, а нужные данные. Так что - уверен ли ты???

А вообще, я еще раз предлагаю: помучиться немножко вручную, а потом добавить поле счетчика и основывать программу на нем.
...
Рейтинг: 0 / 0
запрос на удаление
    #32284055
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Так что - уверен ли ты???
См. сообщение Марины от сегодня, 02:01.
Описание поля CHECK
...
Рейтинг: 0 / 0
запрос на удаление
    #32284059
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз пишу пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CHECK OPERATE    SUM
 1         1        10 . 00 
 2         1        20 . 00 
 1         4         1 . 00 
 3         1        11 . 00 
 1         4         5 . 00 
 4         1        15 . 00 
 1         4         4 . 00 

Кстати, поле SUM неплохо бы и переименовать. Или же с ним надо быть очень аккуратным в Access'e.

В этой таблице деньги по чеку № 1 полностью возвращаются за три раза. Та запрос/программа, которую сейчас пытается найти Марина, похерит после работы, кроме чеков № 1, чеки №№ 2, 3 и 4.

И предлагаю вариант решения:
Код: plaintext
1.
2.
3.
4.
CHECK   SUM-INP   SUM-OUTP
 1           10 . 00        10 . 00 
 2           20 . 00         0 . 00 
 3           11 . 00         0 . 00 
 4           15 . 00         0 . 00 


Т.е. чтобы по номеру чека в результирующем запросе показывалась сумма прихода и возврата.
В принципе, тогда можно обойтись и без счетчика, но идентификатор № кассы все равно понадобится, если касс будет >1. С другой стороны, в ее таблице куча избыточных полей, можно занять и одно из них...
...
Рейтинг: 0 / 0
запрос на удаление
    #32284061
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но там этого не сказано. Там не сказано, что единиц может быть меньше, чем четверок. Может быть, ты в отличие от меня знаком с бухгалтерией и понимаешь, что такое откат и какой код ему соответствует, но даже если считать, что откат - это 1, то все равно их не меньше, а больше. Или откат - это 4???
...
Рейтинг: 0 / 0
запрос на удаление
    #32284062
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Та запрос/программа, которую сейчас пытается найти Марина, похерит после работы, кроме чеков № 1, чеки №№ 2, 3 и 4.

Ну, поверим Марине, что такая комбинация данных невозможна. И что условие "запись создана непосредственно перед этой" действительно дает нужную запись, соответствующую тому, что надо. И тогда проблема только в том, как убедиться, что запись создана непосредственно перед этой.
...
Рейтинг: 0 / 0
запрос на удаление
    #32284065
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>понимаешь, что такое откат и какой код ему соответствует
:) Нет, насколько я понимаю, соответствующие коды изобретены Мариной или ее предшественниками.
Сообщение Марины от сегодня, 00:47
1 - это продажа
а
4 - это откат этой самой продажи


>И что условие "запись создана непосредственно перед этой" действительно дает нужную запись, соответствующую тому, что надо

Такого в принципе быть не может.
1. Я пришел в магазин, купил бутылку водки, а через 2 часа, за которые были пробиты куча чеков, пришел ее возвращать - возврат не обязательно следует за внесением денег в кассу.
2. Кроме водки, я покупал и закуску. А вернул только водку - сумма возврата не обязательно равна сумме, внесенной в кассу, т.е. простым удаление пар (и даже нескольких) записей с одним номером чека не спасет мать русской демократии :)
...
Рейтинг: 0 / 0
запрос на удаление
    #32284068
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Сообщение Марины от сегодня, 00:47
> 1 - это продажа
> а
> 4 - это откат этой самой продажи

Тьфу. И правда, откат - это 4. Но я все равно надеюсь, что перед каждым 4 есть свое 1.

> 1. Я пришел в магазин, купил бутылку водки, а через 2 часа, за которые были пробиты куча чеков, пришел ее возвращать - возврат не обязательно следует за внесением денег в кассу.
> 2. Кроме водки, я покупал и закуску. А вернул только водку - сумма возврата не обязательно равна сумме, внесенной в кассу, т.е. простым удаление пар (и даже нескольких) записей с одним номером чека не спасет мать русской демократии :)

ИМХО, это не тот случай. Если чек был пробит и оплачен тобой два часа назад, то тебе возвращают деньги совсем другой операцией, не по этому номеру чека и, возможно, не в этой кассе, а в главной.

Мне кажется, что ситуация, которую предъявляет нам Марина, - это только ошибки и исправления кассира в процессе работы над одним чеком. Ошибся и тут же сделал Undo, вот эта пара операций и дает нам пару записей с 1 и с 4.
...
Рейтинг: 0 / 0
запрос на удаление
    #32284071
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Короче, постановка (такая, которая действительно решаема) должна выглядеть так: для каждой записи с 4 надо найти одну запись с 1, в которой те же номер чека и сумма.
...
Рейтинг: 0 / 0
запрос на удаление
    #32284072
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Ошибся и тут же сделал Undo,
Все равно это не означает, что кассир заметил ошибку сразу же. Или сразу же решил ее откатить. Кроме того, зачем же имеется возможность делать до 5 откатов по одному чеку?
...
Рейтинг: 0 / 0
запрос на удаление
    #32284074
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Все равно это не означает, что кассир заметил ошибку сразу же. Или сразу же решил ее откатить.

Но она все равно в пределах того же чека. Моя постановка в предыдущем посте эту проблему решает. Тем более что порядок записей в этой таблице не фиксируется, счетчика нет, а значит понятие "сразу же" мы все равно проверить не можем.

> Кроме того, зачем же имеется возможность делать до 5 откатов по одному чеку?

Видимо, это 5 откатов на 5 ошибок. Конец дня и усталый кассир.
...
Рейтинг: 0 / 0
запрос на удаление
    #32284075
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>для каждой записи с 4 надо найти одну запись с 1
Да нет же. М.б. две "4" для одной "1".

> в которой те же номер чека и сумма.
И сумма по той же причине может быть не равна.

Надо ждать Марину...
...
Рейтинг: 0 / 0
запрос на удаление
    #32284079
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Да нет же. М.б. две "4" для одной "1".

Я пока не понимаю, откуда это следует. В изначальной постановке было сказано, что для каждой 4 есть одна 1.

И я вообще не могу представить, как может быть два Undo для одной ошибки. Типа, пробил водку, потом отменил полбутылкки, а потом отменил еще полбутылки?

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

> И сумма по той же причине может быть не равна.

Тогда надо писать программу, которая подбирает комбинацию записей на заданную сумму (потому что в пределах чека хотя бы сумма 4 должна равняться сумме стираемых 1). Задачка не из легких...

> Надо ждать Марину...

Будем ждать. Мой вопрос к Марине: правда ли, что ее устраивает моя постановка от сегодня, 15:44.
...
Рейтинг: 0 / 0
запрос на удаление
    #32284082
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята,это все гадания на кофейной гуще.Пока не будет четкой постановки задачи,решить ее невозможно
З.Ы существующая таблица-яркий пример того ,как НЕ надо проектировать
базы данных
...
Рейтинг: 0 / 0
запрос на удаление
    #32284086
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
В общем, я пока написал то, что работает (проверено!) в предположении, что моя постановка верна.

1. Создаем запрос qry1:

Код: plaintext
1.
2.
SELECT TOP  1  *
FROM otchet
WHERE (check=[c]) AND (sum=[s]) AND (operate= "1 ");


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.
Sub Knopka_Click()

Dim q As QueryDef

With CurrentDb
    Set q = .QueryDefs( "qry1" )
    With .OpenRecordset( "select * from otchet where operate='4'" , dbOpenDynaset)
        Do Until .BOF And .EOF
            q.Parameters( "c" ) = !Check
            q.Parameters( "s" ) = !Sum
            With q.OpenRecordset
                If .BOF Then
                    MsgBox  "Не найдена запись с 1 . Чек " & q.Parameters( "c" ) &  ", сумма "  & q.Parameters( "s" )
                Else
                    .Delete
                End If
                .Close
            End With
            .Delete
            .MoveFirst
        Loop
        .Close
    End With
End With

End Sub


Если запись с 1 не найдена, то запись с 4 все равно стирается. Если это неправильно, то несложно программу переделать.
...
Рейтинг: 0 / 0
21 сообщений из 71, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / запрос на удаление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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