![]() |
| ||
|
|
Новости |
Поиск |
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, при этом сам НД детали "не передергивается"..:-)
sniknik (2010-01-14 14:51:00) [21]> нужно "вручную" делать рефреш..
не нужно, если сделать как я говорил.
> ты это серьезно ? делать вычисление для каждой позиции?.
они не делаются "для каждой позиции", только для отображаемых.
+ можно например просто не рассчитывать для не открытого документа, или все таки рассчитывать но только если в числе 0 или документ текущий (редактируется), тут вся прелесть в том что все в твоих руках.
> клиент "умрет"
у меня тысячи не умирают, в подобной (примерно) ситуации... что то делаю не так.
а объединение таблиц в запросах чтобы получить подобную сумму вообще стандартная практика... тоже наверное что то не так делают, иначе клиенты бы дохли как мухи однодневки.
Anatoly Podgoretsky (2010-01-14 14:07:00) [22]> sniknik (14.01.2010 10:59:18) [18]
Любовь зла - полюбишь и козла.
Виталий Панасенко (2010-01-14 14:04:00) [23]
> sniknik © (14.01.10 13:57) [23]
ты это серьезно ? делать вычисление для каждой позиции?. ну, пусть из сотни документов...клиент "умрет".... ладно.. флуд, он и есть флуд.. тему - в "потрепаться"...
Виталий Панасенко (2010-01-14 14:01:00) [24]ГоспАди! я ухе писал, что тема превратилась во флуд! Итог у меня в подзапросе мастера подсчитывается(старттопик смотри).. Меня просто НЕ УСТРАИВАЛО то, что для обновления суммы итого нужно "вручную" делать рефреш.. и при этом еще передергивается НД детали... вот и все...
sniknik (2010-01-14 13:57:00) [25]> А Эх тупо пробегает весь НД
это "тупо" гораздо менее напряжено, чем по изменению каждой цифры загружать сервер изменением + перерасчетом + перезапросом,
т.е. я бы поменял знаки твоих представлений на противоположные.
Sergey13 (2010-01-14 13:15:00) [26]> [21] Виталий Панасенко (14.01.10 12:41)
> И что я там буду считать? Итог по всей детали?
А что, у тебя в мастере не это посчитано?
> А Эх тупо пробегает весь НД
Открытый НД, заметь. И не переоткывает.
Виталий Панасенко (2010-01-14 12:41:00) [27]
> Sergey13 © (14.01.10 12:13) [20]
И что я там буду считать? Итог по всей детали? В каждой строке? А Эх тупо пробегает весь НД
Sergey13 (2010-01-14 12:13:00) [28]> [19] Виталий Панасенко (14.01.10 12:05)
так у тебя
> в мастере подсчитывается
а тебе и говорят, что надо в детали (или рядом) считать. Типа как в EHLib-овском гриде сумма по колонке.
Виталий Панасенко (2010-01-14 12:05:00) [29]Оно и есть рассчитываемое.В первом посте писал
> Виталий Панасенко (13.01.10 17:14)
> Есть связка двух ADODataSetов, в мастере подсчитывается
> итого по детали(подзапросом select sum from dateail where
> id=master_id)
sniknik (2010-01-14 10:59:00) [30]> ЗЫ. АДО не самая удобная библиотека для разработки.
чтобы любить кошек нужно уметь их готовить... (хотя, еще бывает и необоснованная любовь, типа "люблю, а почему не знаю")
> Я в первом посте писал, что
>> указал Resync Command нужный(обновляется одна запись мастера)
а зачем? менять значения в базе только для отображения их пользователю? странный подход. а если захочешь сделать "правильно" типа чтобы сохранять весть документ при нажатии "сохранить", а не при редактировании каждой записи. (правильно использование режима батчапдета, неправильно транзакция в базе при начале редактирования пользователем). что тогда?
> Обычная сумма по документу, изменяющаяся в процессе изменения составляющих. Типа
> Мастер:
> № документа, Общее кол-во
> Деталь
> Код, Количество
> Код, Количество
вместо этого -
Мастер:
№ документа
Деталь
Код, Количество
Код, Количество
и все. а "общее количество" сделать рассчитываемым полем, в рекордсете, в базе оно не нужно.
Виталий Панасенко (2010-01-14 09:31:00) [31]
> Anatoly Podgoretsky © (13.01.10 20:40) [13]
Я в первом посте писал, что
> указал Resync Command нужный(обновляется одна запись мастера)
Виталий Панасенко (2010-01-14 09:30:00) [32]
> Anatoly Podgoretsky © (13.01.10 20:38) [12]
Обычная сумма по документу, изменяющаяся в процессе изменения составляющих. Типа
Мастер:
№ документа, Общее кол-во
Деталь
Код, Количество
Код, Количество
вот.. и при добавлении новой записи или изменении Количества в детали актуализировать Общее количество в Мастере..
Только это уже самый обычный флуд.. я ж писал, что тема закрыта...
ANB (2010-01-14 09:24:00) [33]
> Виталий Панасенко (13.01.10 18:07) [11]
Сделай всю связку мастер-деталь руками (на событиях) и управляй ей, как хочешь.
ЗЫ. АДО не самая удобная библиотека для разработки.
Anatoly Podgoretsky (2010-01-13 20:40:00) [34]> Виталий Панасенко (13.01.2010 17:34:05) [5]
Ты не в курсе, что рефреш можно сделать или выдав одноименную команду, или переоткрытием запроса - по выбору
Anatoly Podgoretsky (2010-01-13 20:40:00) [35]> Виталий Панасенко (13.01.2010 17:39:07) [7]
Смотри выше, проблем произвести рефреш нет, но и нужды тоже, только при неправильном проектирование такая нужда может возникнуть.
Anatoly Podgoretsky (2010-01-13 20:38:00) [36]> Виталий Панасенко (13.01.2010 17:25:03) [3]
Какая еще сумма при изменение детали, callback что ли , так это дурость и отхождение от минимальной нормализации.
Виталий Панасенко (2010-01-13 18:07:00) [37]Почти. Мне нужно при изменении данных в детали, участвующих в агрегатном расчете в мастере, происходил этот самый подсчет.. И при этом положение курсора в НД детали не изменялось бы. Все, это уже флуд. Тема решена и закрыта. С наступающим Старым Новым годом!:-)
sniknik (2010-01-13 17:56:00) [38]а ты уверен что выбрал правильные термины для описания задачи?
Виталий Панасенко (2010-01-13 17:54:00) [39]странно.. почему-то в ФИБах за такие действия, мастер деталью не становится. Нормальное поведение - увидеть итог по счету или накладной, например...Если еще и клиент набирает товара на "вот у меня есть столько-то лавэ"..Ну да ладно. Решил. Тема закрыта
sniknik (2010-01-13 17:49:00) [40]если сделать задачу то вариантов масса, а вот если из мастера насильно сделать детайл то да, без вариантов.