![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
АДО и master-detail [D7, Access 2000]
Виталий Панасенко © (2010-01-13 17:14:00)Есть связка двух ADODataSetов, в мастере подсчитывается итого по детали(подзапросом select sum from dateail where id=master_id). Все работает, хотя есть одно "но". Даже два...Первое "но": при изменении данных в детали, мастер не решрешится сам. Ну это такое дело. Если мастер рефрешить вручную, то пересчитывается без проблем, указал Resync Command нужный(обновляется одна запись мастера). И тут возникает второе "но": деталь тоже передергивается, устанавливая указатель на первую запись.. Можно, конечно, сделать после рефреша мастера Last детали...Деталь редактируется в гриде, так удобно в данном случае для табличных данных...Есть ли другой вариант, окромя Master.Refresh/Detail.Last? Я просто привык к ФИБам, там это просто реализовано настройкой в детали опции ForceMasterRefresh, при этом сам НД детали "не передергивается"..:-)
Anatoly Podgoretsky (2010-01-16 21:52:00) [1]> Виталий Панасенко(дом) (16.01.2010 21:29:44) [44]
Но для этого совсем не требуются никакие запроса, особенно для не закоммитенных данных, достаточно обработчиков.
sniknik (2010-01-16 21:39:00) [2]> я не встречал ни единой "фирменной" учетной системы ...
а ты не ищи те, что считают/отображают под итоги (против чего во всей ветке ни одного возражения), ты найди такую которая для того чтобы посчитать это все по ходу действий пишет в базу как ты.
sniknik (2010-01-16 21:36:00) [3]> вообще, это как-то из другой оперы
из той же самой, делаешь все через запись/чтение базы, из-за этого и "передергивание" возникло, - причина -> следствие. уберешь причину следствие тоже исчезнет, а исправишь только следствие... и причина "даст в лоб" где нибудь в другом месте, т.к. в принципе не верна.
> уже стало не интересно..
всего лишь только что? а как мне столько раз одно и тоже в разных вариантах повторять?
Виталий Панасенко(дом) (2010-01-16 21:29:00) [4]И, честно, я не встречал ни единой "фирменной" учетной системы, где бы при выписке любого документа, состоящего из шапки и собственно строк данных(счета, накладной, меневки, требования, возврата) не считался и не отображался итог по документу в процессе работы с ним(добавлении/удалении/редактировании).. количественный, суммарный..тот, что в данном документе актуальный.... будь то 1С, Парус, Акцент, Дебет+...
Виталий Панасенко(дом) (2010-01-16 21:17:00) [5]
> sniknik © (16.01.10 20:30) [42]
вообще, это как-то из другой оперы, на мой взгляд..мне тупо нужно было показать общее количество(сумму) без учета всех любых других.. внес в деталь
КОД, Количество в мастере Общее Кол-во стало на это количество больше, удалил - стало меньше, изменил - корректно пересчиталось.. не больше и не меньше.. просто неудобство было в передергивании детали при обновлении мастера... уже стало не интересно..
sniknik (2010-01-16 20:30:00) [6]> разница то какая?
sniknik © (14.01.10 10:59) [18]
см. часть про транзакции.
и +
раз мы уже говорим про суммы, то вот ты редактируешь документ, еще не принял его а у какой то позиции цена вместо 100руб стала 200руб... а в это время кто-то вносит другой документ... или ты ошибся, и просто удалил ошибочную позицию... а цена в базе уже прописалась. и это без переоценок, учета. просто было чего то на 1000руб (10 штук) и вдруг стало на 2000руб.
считаешь правильно?
и это только потому что ты не можешь нормальный алгоритм реализовать.
Виталий Панасенко(дом) (2010-01-16 18:51:00) [7]
> sniknik © (16.01.10 16:18) [38]
>
> > в той же 1С
> кстати, даже в свои "махровые" времена с файловой базой
> так никогда не делала, даже тогда у нее был временный файл
> документа, и значения записей не менялись прямо в базе в
> процессе редактирования.
и чем "временный файл документа" отличается от таблицы в БД? разница то какая?
sniknik (2010-01-16 17:27:00) [8]> Ты пол поменял?
я то тут то причем? это же от имени 1С, а она женского рода (не прав? с русским туго)
Anatoly Podgoretsky (2010-01-16 16:38:00) [9]> sniknik (16.01.2010 16:18:38) [38]
> так никогда не делала,
Ты пол поменял?
sniknik (2010-01-16 16:18:00) [10]> в той же 1С
кстати, даже в свои "махровые" времена с файловой базой так никогда не делала, даже тогда у нее был временный файл документа, и значения записей не менялись прямо в базе в процессе редактирования.
sniknik (2010-01-16 16:14:00) [11]> почему "не кошерно" отображать в процессе редактирования строк документа итог по ним...
"не кошерно" делать так как это делаешь ты, сохраняешь каждую запись документа ради того чтобы запросом посчитать его сумму, о собственно к отображению предварительного итога претензий никто и не имел.
Виталий Панасенко (2010-01-16 13:26:00) [12]интересно, конечно, почему "не кошерно" отображать в процессе редактирования строк документа итог по ним... в той же 1С аж бегом отображается на клиенте сумма по документы в процессе набора строк того же счета, к примеру...
sniknik (2010-01-16 12:59:00) [13]раз уж переключились на суммы, то их бы как раз писать в записи заголовков документов можно было бы...
но, как говорил ([31] например) по другим причинам, не для того чтобы менять в процессе редактирования документа только для того чтобы отобразить на клиенте. а для каких то глобальных аналитических отчетов, которые это бы упростило (но зато добавило бы слежение за их правильностью, по примеру 1С с их точками актуальности, перерасчетами, закрытиями периодов...).
Виталий Панасенко (2010-01-16 12:26:00) [14]Да, ты прав...я почему-то подумал, что догадаются, что сумма подсчитывается(sum я так поля не называю)... Но в
> Виталий Панасенко (14.01.10 15:26) [30]
прекрасно видно, что сумма рассчитывается..:-)
sniknik (2010-01-14 16:31:00) [15]> я не говорил, что сумма пишется в БД.. нигде..
>> подзапросом selectsum from dateail where > id=master_id
select делает выборку только из базы, т.что ты вот именно тут сказал, и повторил, что оно пишется.
Виталий Панасенко (2010-01-14 16:24:00) [16]а что есть сумма? количество денег, штук...
> sniknik © (14.01.10 16:05) [31]
>
> разговор не про суммы, а по "общее количество" [16] которое
> пишется в базу
я не говорил, что сумма пишется в БД.. нигде..
> Виталий Панасенко (13.01.10 17:14)
>
> Есть связка двух ADODataSetов, в мастере подсчитывается
> итого по детали(подзапросом select sum from dateail where
> id=master_id).
sniknik (2010-01-14 16:05:00) [17]разговор не про суммы, а по "общее количество" [16] которое пишется в базу, как понял по ветке, исключительно ради показа в гриде, а запись данных детали пишется ради расчета общего количества запросом.
так вот, но того ни того не нужно... если конечно нет каких то других, невысказанных здесь причин (например частых отчетов по количеству из "мастерной" таблицы)
> как видно, суммы рассчитываются по детали
суммы это количество? где видно? покажи в описании [0] или после в уточнении, например в [16].
Виталий Панасенко (2010-01-14 15:26:00) [18]вот мастера запрос
select m.mdoc_id, m.mdoc_date, m.mdoc_note,
m.ag_id, m.mng_id, m.mdoc_guid,
(select sum(doc_sum)from rm_doc where mdoc_id=M.mdoc_id) as mdoc_sum,
(select sum(doc_vatsum)from rm_doc where mdoc_id=M.mdoc_id) as mdoc_vatsum,
(select sum(doc_sumnnr)from rm_doc where mdoc_id=M.mdoc_id) as mdoc_nnrsum,
mdoc_status,
mdoc_num
from
rm_mdoc M
вот детали
select d.*
from rm_doc d
where d.mdoc_id=:mdoc_id
and d.block_type=0
order by d.doc_id
как видно, суммы рассчитываются по детали
sniknik (2010-01-14 15:17:00) [19]а в чем сомнения?
Виталий Панасенко (2010-01-14 14:56:00) [20]Это ты об
> sniknik © (14.01.10 10:59) [18]
> и все. а "общее количество" сделать рассчитываемым полем,
> в рекордсете, в базе оно не нужно.
>
?