Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];

Вниз

АДО и master-detail   Найти похожие ветки 

 
Виталий Панасенко   (2010-01-13 17:14) [0]

Есть связка двух ADODataSetов, в мастере подсчитывается итого по детали(подзапросом select sum from dateail where id=master_id). Все работает, хотя есть одно "но". Даже два...Первое "но": при изменении данных в детали, мастер не решрешится сам. Ну это такое дело. Если мастер рефрешить вручную, то пересчитывается без проблем, указал Resync Command нужный(обновляется одна запись мастера). И тут возникает второе "но": деталь тоже передергивается, устанавливая указатель на первую запись.. Можно, конечно, сделать после рефреша мастера Last детали...Деталь редактируется в гриде, так удобно в данном случае для табличных данных...Есть ли другой вариант, окромя Master.Refresh/Detail.Last? Я просто привык к ФИБам, там это просто реализовано настройкой в детали опции ForceMasterRefresh, при этом сам НД детали "не передергивается"..:-)


 
Виталий Панасенко   (2010-01-13 17:18) [1]

Хотя при редактировании данных Detail.Last в AfterPost будет опять же, дергать НД детали.. только теперь в конец НД.


 
Anatoly Podgoretsky ©   (2010-01-13 17:24) [2]

> Виталий Панасенко  (13.01.2010 17:14:00)  [0]

Зачем мастеру рефрешить не измененые данные?


 
Виталий Панасенко   (2010-01-13 17:25) [3]

Почему не измененные? В мастере итоговая сумма всей детали


 
Виталий Панасенко   (2010-01-13 17:26) [4]

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


 
Виталий Панасенко   (2010-01-13 17:34) [5]

У пользователя(да и у меня) от такого поведения ощущение "неуютности":-).. Кажется, что "что-то не то"..:-)


 
sniknik ©   (2010-01-13 17:38) [6]

> Кажется, что "что-то не то"..:-)
так и есть.

мастер на то и мастер что главный, а не наоборот. одно из значений master при переводе это хозяин...


 
Виталий Панасенко   (2010-01-13 17:39) [7]


> sniknik ©   (13.01.10 17:38) [6]

я чуток в английском понимаю.. т.е. я так понял, без вариантов в данном случае?


 
sniknik ©   (2010-01-13 17:49) [8]

если сделать задачу то вариантов масса, а вот если из мастера насильно сделать детайл то да, без вариантов.


 
Виталий Панасенко   (2010-01-13 17:54) [9]

странно.. почему-то в ФИБах за такие действия, мастер деталью не становится. Нормальное поведение - увидеть итог по счету или накладной, например...Если еще и клиент набирает товара на "вот у меня есть столько-то лавэ"..Ну да ладно. Решил. Тема закрыта


 
sniknik ©   (2010-01-13 17:56) [10]

а ты уверен что выбрал правильные термины для описания задачи?


 
Виталий Панасенко   (2010-01-13 18:07) [11]

Почти. Мне нужно при изменении данных в детали, участвующих в агрегатном расчете в мастере, происходил этот самый подсчет.. И при этом положение курсора в НД детали не изменялось бы. Все, это уже флуд. Тема решена и закрыта. С наступающим Старым Новым годом!:-)


 
Anatoly Podgoretsky ©   (2010-01-13 20:38) [12]

> Виталий Панасенко  (13.01.2010 17:25:03)  [3]

Какая еще сумма при изменение детали, callback что ли , так это дурость и отхождение от минимальной нормализации.


 
Anatoly Podgoretsky ©   (2010-01-13 20:40) [13]

> Виталий Панасенко  (13.01.2010 17:34:05)  [5]

Ты не в курсе, что рефреш можно сделать или выдав одноименную команду, или переоткрытием запроса - по выбору


 
Anatoly Podgoretsky ©   (2010-01-13 20:40) [14]

> Виталий Панасенко  (13.01.2010 17:39:07)  [7]

Смотри выше, проблем произвести рефреш нет, но и нужды тоже, только при неправильном проектирование такая нужда может возникнуть.


 
ANB   (2010-01-14 09:24) [15]


> Виталий Панасенко   (13.01.10 18:07) [11]

Сделай всю связку мастер-деталь руками (на событиях) и управляй ей, как хочешь.

ЗЫ. АДО не самая удобная библиотека для разработки.


 
Виталий Панасенко   (2010-01-14 09:30) [16]


> Anatoly Podgoretsky ©   (13.01.10 20:38) [12]

Обычная сумма по документу, изменяющаяся в процессе изменения составляющих. Типа
Мастер:
№ документа, Общее кол-во
Деталь
Код, Количество
Код, Количество

вот.. и при добавлении новой записи или изменении Количества в детали актуализировать Общее количество в Мастере..
Только это уже самый обычный флуд.. я ж писал, что тема закрыта...


 
Виталий Панасенко   (2010-01-14 09:31) [17]


> Anatoly Podgoretsky ©   (13.01.10 20:40) [13]

Я в первом посте писал, что
> указал Resync Command нужный(обновляется одна запись мастера)


 
sniknik ©   (2010-01-14 10:59) [18]

> ЗЫ. АДО не самая удобная библиотека для разработки.
чтобы любить кошек нужно уметь их готовить... (хотя, еще бывает и необоснованная любовь, типа "люблю, а почему не знаю")

> Я в первом посте писал, что
>> указал Resync Command нужный(обновляется одна запись мастера)
а зачем? менять значения в базе только для отображения их пользователю? странный подход. а если захочешь сделать "правильно" типа чтобы сохранять весть документ при нажатии "сохранить", а не при редактировании каждой записи. (правильно использование режима батчапдета, неправильно транзакция в базе при начале редактирования пользователем). что тогда?

> Обычная сумма по документу, изменяющаяся в процессе изменения составляющих. Типа
> Мастер:
> № документа, Общее кол-во
> Деталь
> Код, Количество
> Код, Количество
вместо этого -
Мастер:
№ документа
Деталь
Код, Количество
Код, Количество
и все. а "общее количество" сделать рассчитываемым полем, в рекордсете, в базе оно не нужно.


 
Виталий Панасенко   (2010-01-14 12:05) [19]

Оно и есть рассчитываемое.В первом посте писал
> Виталий Панасенко   (13.01.10 17:14)  


> Есть связка двух ADODataSetов, в мастере подсчитывается
> итого по детали(подзапросом select sum from dateail where
> id=master_id)


 
Sergey13 ©   (2010-01-14 12:13) [20]

> [19] Виталий Панасенко   (14.01.10 12:05)

так у тебя
> в мастере подсчитывается

а тебе и говорят, что надо в детали (или рядом) считать. Типа как в EHLib-овском гриде сумма по колонке.


 
Виталий Панасенко   (2010-01-14 12:41) [21]


> Sergey13 ©   (14.01.10 12:13) [20]

И что я там буду считать? Итог по всей детали? В каждой строке? А Эх тупо пробегает весь НД


 
Sergey13 ©   (2010-01-14 13:15) [22]

> [21] Виталий Панасенко   (14.01.10 12:41)
> И что я там буду считать? Итог по всей детали?

А что, у тебя в мастере не это посчитано?

> А Эх тупо пробегает весь НД

Открытый НД, заметь. И не переоткывает.


 
sniknik ©   (2010-01-14 13:57) [23]

> А Эх тупо пробегает весь НД
это "тупо" гораздо менее напряжено, чем по изменению каждой цифры загружать сервер изменением + перерасчетом + перезапросом,
т.е. я бы поменял знаки твоих представлений на противоположные.


 
Виталий Панасенко   (2010-01-14 14:01) [24]

ГоспАди! я ухе писал, что тема превратилась во флуд! Итог у меня в подзапросе мастера подсчитывается(старттопик смотри).. Меня просто НЕ УСТРАИВАЛО то, что для обновления суммы итого нужно "вручную" делать рефреш.. и при этом еще передергивается НД детали... вот и все...


 
Виталий Панасенко   (2010-01-14 14:04) [25]


> sniknik ©   (14.01.10 13:57) [23]

ты это серьезно ? делать вычисление для каждой позиции?. ну, пусть из сотни документов...клиент "умрет".... ладно.. флуд, он и есть флуд.. тему - в "потрепаться"...


 
Anatoly Podgoretsky ©   (2010-01-14 14:07) [26]

> sniknik  (14.01.2010 10:59:18)  [18]

Любовь зла - полюбишь и козла.


 
sniknik ©   (2010-01-14 14:51) [27]

> нужно "вручную" делать рефреш..
не нужно, если сделать как я говорил.

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

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


 
Виталий Панасенко   (2010-01-14 14:56) [28]

Это ты об
> sniknik ©   (14.01.10 10:59) [18]


> и все. а "общее количество" сделать рассчитываемым полем,
>  в рекордсете, в базе оно не нужно.
>

?


 
sniknik ©   (2010-01-14 15:17) [29]

а в чем сомнения?


 
Виталий Панасенко   (2010-01-14 15:26) [30]

вот мастера запрос
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 16:05) [31]

разговор не про суммы, а по "общее количество" [16] которое пишется в базу, как понял по ветке, исключительно ради показа в гриде, а запись данных детали пишется ради расчета общего количества запросом.
так вот, но того ни того не нужно... если конечно нет каких то других, невысказанных здесь причин (например частых отчетов по количеству из "мастерной" таблицы)

> как видно, суммы рассчитываются по детали
суммы это количество? где видно? покажи в описании [0] или после в уточнении, например в [16].


 
Виталий Панасенко   (2010-01-14 16:24) [32]

а что есть сумма? количество денег, штук...
> 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:31) [33]

> я не говорил, что сумма пишется в БД.. нигде..
>> подзапросом select sum from dateail where > id=master_id
select делает выборку только из базы, т.что ты вот именно тут сказал, и повторил, что оно пишется.


 
Виталий Панасенко   (2010-01-16 12:26) [34]

Да, ты прав...я почему-то подумал, что догадаются, что сумма подсчитывается(sum  я так поля не называю)... Но в
> Виталий Панасенко   (14.01.10 15:26) [30]

прекрасно видно, что сумма рассчитывается..:-)


 
sniknik ©   (2010-01-16 12:59) [35]

раз уж переключились на суммы, то их бы как раз писать в записи заголовков документов можно было бы...
но, как говорил ([31] например) по другим причинам, не для того чтобы менять в процессе редактирования документа только для того чтобы отобразить на клиенте. а для каких то глобальных аналитических отчетов, которые это бы упростило (но зато добавило бы слежение за их правильностью, по примеру 1С с их точками актуальности, перерасчетами, закрытиями периодов...).


 
Виталий Панасенко   (2010-01-16 13:26) [36]

интересно, конечно, почему "не кошерно" отображать в процессе редактирования строк документа итог по ним...  в той же 1С аж бегом отображается на клиенте сумма по документы в процессе набора строк того же счета, к примеру...


 
sniknik ©   (2010-01-16 16:14) [37]

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


 
sniknik ©   (2010-01-16 16:18) [38]

> в той же 1С
кстати, даже в свои "махровые"  времена с файловой базой так никогда не делала, даже тогда у нее был временный файл документа, и значения записей не менялись прямо в базе в процессе редактирования.


 
Anatoly Podgoretsky ©   (2010-01-16 16:38) [39]

> sniknik  (16.01.2010 16:18:38)  [38]

> так никогда не делала,

Ты пол поменял?


 
sniknik ©   (2010-01-16 17:27) [40]

> Ты пол поменял?
я то тут то причем? это же от имени 1С, а она женского рода (не прав? с русским туго)



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.004 c
1-1240936541
Igor2010
2009-04-28 20:35
2010.03.21
JavaScript+IHTMLWindows2


1-1242910957
Unknown user
2009-05-21 17:02
2010.03.21
TTypeInfo


2-1263901034
webpauk
2010-01-19 14:37
2010.03.21
Приведение типов


2-1263582604
serhiyiv
2010-01-15 22:10
2010.03.21
TListView и OnCustomDrawItem


1-1242222408
Гарик
2009-05-13 17:46
2010.03.21
Справка WinHelp в Дельфи 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский